【问题记录】ajax dataType属性

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

原文地址:https://www.cnblogs.com/xsshu/p/11238046.html