最近整理代碼,發現一些ajax dataType 屬性值設置的問題。下面直接上代碼說明下
前台ajax請求
$.ajax({ type: "get", dataType: "json", url:url, data: {}, success: function (data) { console.log(data); }, error: function (XMLHttpRequest, textStatus, errorThrown) { console.log(XMLHttpRequest); console.log(textStatus); console.log(errorThrown); } });
注意這里dataType設置的是 json
后台邏輯處理及返回
方式一:
@ResponseBody public String getCode() { return "test"; }
方式二:
@ResponseBody public String getCode() { return "123456"; }
最后測試的結果是方式一會報錯,方式二正常
方式一報錯情況:
經過查詢資料發現,dataType:json
是將響應通過JSON.parse(響應數據)轉化為javaScript對象
而對於String類型的數據通過JSON.parse()進行轉換是需要用“”括起來才能正確解析的
下面是幾組測試
看到這個結果,我認為應該是JSON.parse 會默認進行數據類型轉換,比如Boolean、Integer等
所以為了避免解析異常,還是嚴格按照dataType支持的類型根據實際需要配置
如果只是需要純文本,dataType就配置為 'text'
dataType 屬性可用值:
參考鏈接:
http://www.w3school.com.cn/jquery/ajax_ajax.asp
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse