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。

相關文章
相關標籤/搜索