我正在尝试执行Spring MVC 3 ajax调用来填充json序列化数据的下拉列表。
我看到的问题是我不确定JSON Spring的格式是为我的列表返回的,以及为什么。
返回Ajax数据的方法如下所示:
@RequestMapping(value="/getMyObjects", method=RequestMethod.POST)
@ResponseBody
public List<MyObject> getMyObjects () {
List<MyObject> myobjects = // populate list
return myobjects;
}
据我所知,应该是我需要做的一切,对吧?
在我的应用程序日志中,我看到它确实将响应转换为JSON,如下所示:
2012-06-20 11:08:21,125 DEBUG(AbstractMessageConverterMethodProcessor.java:139) - 写[[MyObject [id = 1376,name = Something test],MyObject [id = 1234 name = More test]]] as “application / json; charset = UTF-8”使用[org.springframework.http.converter.json.MappingJacksonHttpMessageConverter@d1b7e5]
但那个JSON字符串对我来说很奇怪,这有效吗?
我期待的内容有[{id:1376,name =“Something test”},{id:1234,name =“More test”}]
在客户端,当我收到响应并发出警报时,我看到它说出了一个像这样的对象数组:[Object object] [Object object],我不知道如何处理这些数据。
我尝试: 警报(数据); - 给出我刚才描述的输出 $(data).each(function(){ 警报(this.id); //未定义! });
如何使用此类JSON数据或如何将其转换为更易于管理的数据?
[编辑]使用当前警报响应附加我的客户端代码我正在尝试: $就({ 类型:“POST”, url:“getMyObjects”, 成功:函数(数据){ 警报(数据); // [对象对象] [对象对象] 警报(data.value); //未定义 $(data).each(function(){ 警报(this.id); //每次迭代都未定义 }); }, error:function(XMLHttpRequest,textStatus,errorThrown){ 警报(textStatus); } });
答案 0 :(得分:0)
Spring 3提供了与DWR(直接web远程处理)的集成,这对于AJAX调用来说是非常酷的framwrork。在DWR中,您可以非常轻松地处理列表,就像在核心java中一样。
答案 1 :(得分:0)
就是这样!你应该得到你期望的json格式。不再需要代码(解析器,格式化)。
你看不到实际的json返回。好吧,你在浏览器中立即尝试你的网址,而不是像http://yourdomain/yourservlet/getMyObjects
这样的ajax调用它,然后你就会看到你的json。
或者,使用带有firebug的firfox,你可以看到你的ajac电话(请求和响应)
<强>更新强>
$.ajax({
url: "path/to/your/url",
cache: false,
async: false,
success: function(data){
for (var i = 0; i < data.length; i++) {
alert(data[i].id);
alert(data[i].name);
}
}
});