最近整理代码,发现一些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