美文网首页
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