ajax請求狀態碼為0的解決辦法


原文鏈接:https://blog.csdn.net/changqing5818/article/details/53932463

前言

今天遇到個奇怪的問題,使用JQuery的ajax請求,后台的Controller層也接收到請求了,一切處理很正常,但是很奇怪,瀏覽器Debug發現,responseText是”error”,狀態碼是0而不是200.

請求源碼如下

$.ajax({
    type: "POST", url: targetUrl, cache: false, data:post_data, dataType:"json", async: true, // 默認為異步請求 error: function(error) { console.log(error); }, success: function(data) { //...  } }); 

 

狀態含義

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

問題分析

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

  • url不存在(排除) – Controller層定義正確
  • url不可達(排除) – 后台確實接收到請求了,而且處理正確
  • 發送了跨域請求(排除) – 使用CORS Filter, 測試發現也不是
  • 數據格式錯(排除) – 瀏覽器和后台調試發現,數據格式正確
  • ajax在完成之前請求已經被取消(ajax請求沒有發出) – 確實是canceled,但是請求確實發出了
  • 請求超時 – 確認問題

解決辦法

  • 使用異步請求
  • 將timeout時長設置稍長一點
$.ajax({ 
    type: "POST", url: targetUrl, cache: false, data : post_data, // 傳參 dataType : "json", async: false, // 使用同步操作 timeout : 50000, //超時時間:50秒 error: function(error) { console.log(error); }, success: function(data) { //...  } }); 

 

版權聲明:作者寫博是為了總結經驗,和交流學習之用。 如需轉載,請在文章頁面明顯位置給出原文連接。謝謝!如有問題,請留言!


免責聲明!

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



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