Ajax出现error常见状况(详细版)-火狐浏览器(Firefox)兼容性问题

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

言归正传,最近遇到了几回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状态查看ajax

        }
    });
};

 

 

常见状况:json

  1.若是你是火狐浏览器(Firefox),出现错误调用error方法或者ajax请求了屡次,那么极有多是异步请求的缘由。跨域

   添加   async  : false  ,浏览器

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

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

  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。

相关文章
相关标签/搜索