zoukankan      html  css  js  c++  java
  • Ajax出现error常见情况(详细版)-火狐浏览器(Firefox)兼容性问题

    作为一个程序员,遇到兼容性问题真的很苦恼,尤其是对我这种前端小菜鸡来说遇到了甚是凄惨。一般来说兼容性问题出现率Chrome < IE < Firefox  (╯°Д°)╯︵┴┴

    言归正传,最近遇到了几次ajax兼容性问题,因此进行了归纳总结,已备以后查看。

    function dealMessageById(messageId,dealFlag)
    {
        $.ajax({
            url: getRootPath() + "/usercenter/message/UserMessage.do?method=DealMessageById", 
            type: "post",
            async:false,      //一般都不写,默认为true。具体信息看下面
            data: {
                "messageId" : messageId,
                "dealFlag" : dealFlag
            },
         dataType: 'json',      //data值类型 contentType:
    "application/x-www-form-urlencoded; charset=UTF-8", success: function(data) {if(data.code == 200) { systemMessageInit(); refreshMessage(); $("#systemTable").html("系统消息("+data.siteInforCount+")"); } else { dialog.alert('失败', '失败'); } }, error: function(XMLHttpRequest, textStatus, errorThrown) {         

            alert(XMLHttpRequest.status);    
            

            alert(XMLHttpRequest.readyState);

             alert(textStatus);

              //以上3个值所对应的意义进入另一篇博文status、readyState、textStatus状态查看

            }
        });
    };

    常见情况:

      1.如果你是火狐浏览器(Firefox),出现错误调用error方法或者ajax请求了多次,那么极有可能是异步请求的原因。

       添加   async  : false  ,

        -> async. 默认是 true,即为异步方式,$.ajax执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发$.ajax里的success方法,这时候执行的是两个线程。

        -> async 设置为 false,则所有的请求均为同步请求,在没有返回值之前,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。

      2.后台返回的dataType类型和前台js写的不一致会跳入error

       传的不是json格式的数据就不用写 dataType : 'json' ,

         json格式错误也会跳入error.{"test":1} 所以要注意格式。

         在不需要返回值的情况下,扔按模板格式,设置了dataType:"json",参数;这时候,ajax传值正确时,出现200返回成功状态下报错的特殊情况。

      3.url:'http://192.168.1.100:8080/Xxx

       如果你请求的数据不在本地或者不在同一服务器中,那么就可能是跨域问题,要用jsonp,即  dataType : 'jsonp' ,  当然这意思最基础的方法,jsonp和json的格式还是有点小区别的:  jsonp比json多了个方法,即  json= " json格式数据 ",jsonp= " 方法名(json格式数据)",至于跨域的详细的解释和解决方法找度娘吧。

    不常见的情况:

      1.data没有写

        解决方法:data为空也一定要传"{}";不然返回的是xml格式的。并提示parsererror. data:"{}"。

      2.url路径有中文

        解决方法:去掉中文。

      3.传的数据格式ajax不支持

        解决方法:换成json或其他ajax支持的数据格式。

      4.字符编码不匹配

        解决方法:统一UTF-8。

  • 相关阅读:
    cygwin补充安装gcc/g++的方法
    JS中获取request的值,非常好用的JS代码
    登录页面跳出框架的JS
    asp.net DataTable转JSON
    ASP.NET文件下载的实用方法
    史上最牛X到的身份证号码验证,测试误差为0
    nopcommerce插件深度剖析
    C# foreach,linq,delegate集合查询的性能比较
    jquery tab插件精简版
    建议博客园成立中国的开源项目组织,同意的顶起
  • 原文地址:https://www.cnblogs.com/huxiuqian/p/10152166.html
Copyright © 2011-2022 走看看