jQuery ajax請求錯誤返回status 0和錯誤error的問題


上周發現一個jQuery ajax請求錯誤返回status 0和錯誤error的問題,responseText是"error",狀態碼是0而不是200:

$.ajax({
            type: "POST",
            beforeSend: function(xhr){xhr.setRequestHeader('__RequestVerificationAntiCSRFToken', $("#hidden-CSRFToken").val());},
            url: $(this).data('targetUrl'), 
            cache: false,        
            data:post_data,
            dataType:"json",
            async: true,
            error: function(jqXHR, error, errorThrown) {
                alert(jqXHR.status);          
                },
            success: function(data) {
               //...
               }
  });    

分析問題,發現以上代碼沒有問題,請求根本沒有發送到后台,狀態碼是0表示沒有發出ajax請求。各個狀態含義:

  • 0 - (未初始化)還沒有調用send()方法
  • 1 - (載入)已調用send()方法,正在發送請求
  • 2 - (載入完成)send()方法執行完成,
  • 3 - (交互)正在解析響應內容
  • 4 - (完成)響應內容解析完成,可以在客戶端調用了

jQuery ajax請求錯誤返回status 0和錯誤error的問題,分析可能的原因:

  • url不存在(排除)
  • url不可達(排除)
  • 發送了跨域請求(排除)
  • 數據格式錯(排除)
  • ajax在完成之前請求已經被取消(ajax請求沒有發出),由於,例如:頁面已經跳轉或跳轉太快、瀏覽器輸入新的url、按鈕立即新的點擊等確定

修改方法是在原來的按鈕button的type="submit"改成"button",頁面不立即跳轉,問題排除。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM