【发布时间】:2014-09-26 11:59:59
【问题描述】:
我的 JavaScript 代码应该从 servlet 获取两个参数:
玩家姓名和玩家类型(人\电脑)
JavaScript 使用 Ajax 将请求发送到名为:UpdateStatusPaneServlet.java 的 servlet
在 servlet 上,我创建了 2 个参数的 ArrayList<String> 并将其发送到 Ajax。
你可以在图片中看到数组看起来没问题。
我不确定如何使用indexOf() 函数获取参数,或者我可能需要使用其他函数。
我也尝试了get(),但没有成功。
同样使用 playerNameAndType[0] 它只打印 '['
JavaScript:
function printStatusPane() {
$.ajax({
url: "UpdateStatusPaneServlet",
timeout: 2000,
error: function() {
console.log("Failed to send ajax");
},
success: function(playerNameAndType) {
console.log("GOT ajax: " + playerNameAndType);
$("#currentPlayer").append(playerNameAndType.indexOf(0));
$("#playerType").append(playerNameAndType.indexOf(1));
}
});
}
Servlet (Java):
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
Gson gson = new Gson();
String currentPlayerNameJSON = "";
String playerTypeJSON = "";
Engine engine = (Engine)getServletContext().getAttribute("engine");
ArrayList<String> JSONRequest = new ArrayList<String>(2);
currentPlayerNameJSON = gson.toJson(engine.GetCurrentPlayer().GetPlayerName());
playerTypeJSON = gson.toJson(engine.GetCurrentPlayer().GetPlayerType().toString());
JSONRequest.add(currentPlayerNameJSON);
JSONRequest.add(playerTypeJSON);
out.print(JSONRequest);
} finally {
out.close();
}
}
【问题讨论】:
-
您的控制台为 playerNameAndType 打印什么??
-
您也可以尝试以下方法吗?变种测试 = [];测试 = playerNameAndType;并尝试让 test[0] 打印
-
尝试使用 JSON.parse(playerNameAndType) 将其转换为 json,然后使用 index.parse 访问它。
var obj = JSON.parse(playerNameAndType); obj[0] -
@KumarKailash,当我在控制台上输入 playerNameAndType 时:"["Bob", "Human"]"
-
您说您正在接收 "["Bob", "Human"]" 。只需 $("#currentPlayer").append(playerNameAndType[0]); $("#playerType").append(playerNameAndType[1]);
标签: java javascript jquery ajax servlets