我正在尝试将模型对象从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;
}
这也不会产生成功警报。 请建议
答案 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]);
}
}
的小提琴示例
答案 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参数。