我有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();
}
}
答案 0 :(得分:1)
根据D.T.评论,我修复了它:
var arrayJson = JSON.parse(playerNameAndType);
$("#currentPlayer").append(arrayJson[0]);
$("#playerType").append(arrayJson[1]);
并正确打印。
答案 1 :(得分:0)
indexOf
返回数组值的位置。使用键索引获取数组值并追加到id
playerNameAndType = ["Bob", "Human"];
$("#currentPlayer").append(playerNameAndType[0]);
$("#playerType").append(playerNameAndType[1]);
答案 2 :(得分:0)
正如您所说,控制台输出为["Bob", "Human"]
您可以通过索引直接访问它:
$("#currentPlayer").append(playerNameAndType[0]);
$("#playerType").append(playerNameAndType[1]);
indexof()
返回的是您在参数中传递的元素的索引。
playerNameAndType.indexOf("Bob")
会给你0
,索引为“Bob”。
示例:
var person = ["Bob", "Human"];
document.write("Hey, " + person[0] + "!! You are first in array.");
答案 3 :(得分:0)
你得到一个对象数组。只需从索引中检索对象即可。
$("#currentPlayer").append(playerNameAndType[0]);
$("#playerType").append(playerNameAndType[1]);
答案 4 :(得分:0)
而不是下面的代码
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);
请尝试
currentPlayerNameJSON = gson.toJson(engine.GetCurrentPlayer().GetPlayerName());
playerTypeJSON = gson.toJson(engine.GetCurrentPlayer().GetPlayerType().toString());
HashMap<String, String> responseMap = new HashMap<String,String>();
resposeMap.put("name",currentPlayerNameJSON );
resposeMap.put("type",playerTypeJSON );
out.print(responseMap.toString());
在javaScript中你可以
function printStatusPane() {
$.ajax({
url: "UpdateStatusPaneServlet",
timeout: 2000,
error: function() {
console.log("Failed to send ajax");
},
success: function(playerNameAndType) {
var json = $.parseJSON(playerNameAndType);
$("#currentPlayer").append(json['name']);
$("#playerType").append(json['type']);
}
});
}
答案 5 :(得分:0)
您正在返回一个ArrayList-“JSONRequest”,其中包含来自您的servlet的Json对象。尝试通过JSON.stringify(JSONRequest)
将您的arraylist转换为Json。然后,您可以在客户端处理此Json。