$.getJSON()回撥函式不起作用
阿新 • • 發佈:2018-12-31
最近開發遇到一個問題,$.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完成。