将模型对象从Controller返回到Ajax jquery不能在Spring mvc中工作

时间:2015-03-05 22:30:40

标签: java jquery ajax spring-mvc

我正在尝试将模型对象从spring mvc控制器返回到jquery ajax方法,但它返回空白作为响应

JSP:

$( "#dialog-link10" ).click(function( event ) {
var appname= $("#dialog-link10").text();
alert(appname);
if(appname == 'RS Applications') {
$.ajax({
    type : "GET",
    url : 'abc.html',
    dataType: 'JSON' ,
    data: 
        {"id" : $("#dialog-link10").text()}
    ,
    success : function(data) {
        alert('success')
        alert('data')

    }
});}

控制器:

@RequestMapping(method=RequestMethod.GET, value="/abc")
@ResponseBody
public  Model helloWorld2( @RequestParam("id") String id, Model model) {

    System.out.println("*****"+id);

    List <String> list1=new ArrayList<String>();
    List <String> list2=new ArrayList<String>();

        System.out.println("here");

        list1.add("abc");
        list1.add("abc2");
        list1.add("abc3");
        list1.add("abc4");

        model.addAttribute("list1", list1);

        return model;
        }

这也不会产生成功警报。 请建议

4 个答案:

答案 0 :(得分:0)

您的方法应直接返回列表,作为json,无需将其放入模型中并返回模型。还要检查回调ajax中是否有错误。

答案 1 :(得分:0)

您在ajax调用中指定了dataType: 'JSON',但您没有将响应对象(模型)转换为控制器中的json。

来自dataType设置的jQuery ajax documentation

  

您期望从服务器返回的数据类型。如果没有指定,jQuery将尝试根据响应的MIME类型推断它(XML MIME类型将产生XML,在1.4 JSON中将产生一个JavaScript对象,在1.4脚本中将执行脚本,其他任何东西将是以字符串形式返回)

您可能想要引用json序列化程序(除非您想编写自己的序列化程序) - 但重要的部分是在响应中将model序列化为json。例如(使用json-io):

String jsonModel = JsonWriter.objectToJson(model);
return jsonModel;

然后,您可以通过以下方式访问json响应对象中包含的字符串数组:

success : function(data) {
     for (i = 0; i < data.list1.length; i++){
          alert(data.list1[i]);
     }
}

reading json objects

的小提琴示例

答案 2 :(得分:0)

我遇到了这个问题,花了几个小时才发现问题。
只需从您的参数中删除“模型模型”即可。
请改用Map<String, String>Map<String, Object>

答案 3 :(得分:0)

尝试将produces = MediaType.APPLICATION_JSON添加到RequestMapping注释

@RequestMapping(method=RequestMethod.GET, value="/abc", produces = MediaType.APPLICATION_JSON)

此外,方法中可能不需要Model参数。