我正在尝试使用多个值从我的服务器返回到Java中的AJAX。现在,我使用这种方法,但这不是一个好的解决方案:
使用Javascript:
success: function(list) {
var firstValue = list[0];
var secondValue = list[1];
var thirdValue = list[2];
}
爪哇:
ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>();
list.add(infoFirstValue());
list.add(infoThirdValue());
list.add(infoThirdValue());
String glist = gson.toJson(list);
response.getWriter().write(glist);
是否可以返回多个值或对象或其他解决方案?
答案 0 :(得分:3)
如果有帮助,这里有一些基于你的代码片段,展示了如何切换到对象样式响应而不是数组。 Gson包含类JsonObject
,这可能是您最简单的使用方法:http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/JsonObject.html
然而,Gson的方式比那更强大 - 你实际上可以直接序列化一个普通的旧Java对象,这可能比将现有数据转换为JsonObject
的中间步骤更优雅(参见现有的答案) :https://stackoverflow.com/questions/1668862/good-json-java-library/1668951#1668951)。至少,info*Value()
方法可能更适合作为您序列化对象的方法。而不是将返回的对象属性存储为JavaScript中的函数范围变量,我假设您可以只传递对象并访问其属性。
JAVA
JSONObject rv = new JSONObject();
rv.add("firstValue", infoFirstValue());
rv.add("secondValue", infoSecondValue());
rv.add("thirdValue", infoThirdValue());
String gobject = gson.toJson(rv);
response.getWriter().write(gobject);
JAVASCRIPT
success: function(obj){
var firstValue = obj.firstValue;
var secondValue = obj.secondValue;
var thirdValue = obj.thirdValue;
}