0

我正在尝试执行 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]]] 作为“应用程序/ 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() { alert(this.id); // undefined! });

如何使用这种 JSON 数据,或者如何将其转换为更易于管理的数据?

[编辑] 将我的客户端代码附加到我正在尝试的当前警报响应中: $.ajax({ type : "POST", url : "getMyObjects", success : function(data) { alert(data); // [Object object ] [Object object] alert(data.value); // 未定义 $(data).each(function() { alert(this.id); // 每次迭代未定义 }); }, error : function (XMLHttpRequest, textStatus, errorThrown) { alert(textStatus); } });

4

2 回答 2

0

Spring 3 提供了与DWR(直接 Web 远程处理)的集成,这对于 AJAX 调用来说是非常酷的框架。在 DWR 中,您可以像在核心 java 中一样轻松处理列表。

于 2012-06-20T17:08:20.957 回答
0

就是这个!你应该得到你所期望的 json 格式。无需更多代码(解析器、格式化)。

您没有看到的是返回的实际 json。好吧,您可以立即在浏览器中尝试您的 url,而无需像http://yourdomain/yourservlet/getMyObjects您一样通过 ajax 调用它,然后将看到您的 json 原样。

否则,将 firfox 与 firebug 一起使用,您可以看到您的 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);
    }
}

});

于 2012-06-20T17:25:52.720 回答