最近开发遇到一个问题,$.getJSON(url,data,function success(){})回调函数不起作用,其中的回调函数总是不能执行,代码如下:
var x = document.getElementsByName(data);
var i;
$.ajaxSettings.async = false;
for (i = 0; i < x.length; i++) {
var value=x[i].id;
$.getJSON(ctx + '/sys/dict/description', {
value: value
}, function (data) {
var str = ' <img src="/static/images/toolbox/description.png" title="'+data.value+'"/>';
$('.tooltip-description [desc='+value+']').append(str);
});
开发所用环境springMVC,于是debug模式开始调试,发现返回数据不是json格式,***而回调函数,必须返回标准的JSON串,属性必须带双引号。例如{“name:”,“value”},***于是在服务类里对该请求所针对的方法进行修改,使返回值为map形式,保存后测试,成功运行。
由于用到SpringMVC开发,发现一个问题,当Controller方法没有*@ResponseBody注解时,同样会产生getJSON()回调函数不起作用的错误,因为@ResponseBody* 将内容或对象作为 HTTP 响应正文返回,并调用适合HttpMessageConverter的Adapter转换对象,完成协议—对象 的转换工作,并将其写入输出流。
PS:Spring默认的json协议解析由Jackson完成。