从控制器返回模型对象到Ajax jquery在Spring mvc中不起作用

问题描述 投票:0回答:4

我试图将模型对象从 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;
        }

这也不会生成成功警报。 请推荐

java jquery ajax spring-mvc
4个回答
0
投票

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


0
投票

您在 ajax 调用中指定

dataType: 'JSON'
,但没有将响应对象(模型)转换为控制器中的 json。

来自 jQuery ajax 文档

dataType
设置:

您期望从服务器返回的数据类型。如果未指定,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]);
     }
}

还有一个用于读取 json 对象的小提琴示例


0
投票

我遇到了这个问题,我花了几个小时才找出问题所在。
只需从参数中删除“模型模型”即可。
请使用

Map<String, String>
Map<String, Object>
代替。


0
投票

尝试将

produces = MediaType.APPLICATION_JSON
添加到 RequestMapping 注释中

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

此外,您可能不需要方法中的模型参数。

© www.soinside.com 2019 - 2024. All rights reserved.