需要帮助让Spring 3 / AJAX / JSON下降人口工作

时间:2012-06-20 15:19:26

标签: java ajax json spring

我正在尝试执行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);       }     });

2 个答案:

答案 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);
    }
}

});