美文网首页
ajax parsererror 其他都正常

ajax parsererror 其他都正常

作者: jeneen1129 | 来源:发表于2021-05-07 09:40 被阅读0次

问题描述:

ajax 返回就是直接走then 的 失败函数,status是200,readyState是4,就是statusText是 parsererror


代码:

$.extend({
    ajaxJson:function (method,url,param,success,error) {
        $.ajax({
            type: method,
            async: true, //false为同步,true为异步
            cache: false,
            url: url,
            timeout: 600000, //设置请求超时时间(毫秒)。此设置将覆盖全局设置。
            data: JSON.stringify(param),
            accept:"application/json, text/javascript, */*; q=0.01",
            contentType:"application/x-www-form-urlencoded; charset=UTF-8",
        }).then(function successCallback(resp){
            // 成功回调
            if(resp.code == 200){
                success(resp); // 直接返回要处理的数据,作为默认参数传入之后done()方法的回调
            } else{
                alert(resp.desc);
                return; // 返回一个失败状态的deferred对象,把错误代码作为默认参数传入之后fail()方法的回调
            }
        }, function errorCallback(err){
            // 失败回调
            console.log(err); // 打印状态码
            alert("服务器请求失败,请联系管理员");
        });
    }
})

问题原因:

后端返回的数据类型和前端请求中dataType的要求类型不一致导致的。

dataType:

jquery 中 ajax 的 dataType 属性用于指定服务器返回的数据类型,如果不指定,jQuery 将自动根据 HTTP 包MIME 信息来智能判断,默认会将返回的数据当成字符串处理。datatype 值如下(这个列宽真真无力调整TT):

value description
        
"xml"
         
返回 XML 文档,可用 jQuery 处理。
        
"html"
         
返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
        
"script"
         
返回纯文本JavaScript 代码。不会自动缓存结果,除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
        
"json"
         
返回 JSON 数据 。
        
"jsonp"
         
JSONP 格式。使用JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数,经常被用来同主域名下不同二级域名下的跨域请求。
        
"text"
        
返回纯文本字符串。

解决方法:

统一前后端数据交流的类型

// 可见没有指定 dataType: 'json', 加上之后问题解决了
...
  dataType: 'json',  // 指定 dataType
...







求赞,求鼓励~~~
如有错误,敬请指导!!感谢!! _

相关文章

网友评论

      本文标题:ajax parsererror 其他都正常

      本文链接:https://www.haomeiwen.com/subject/hxksdltx.html