ajax請求狀態碼為0的解決辦法
阿新 • • 發佈:2018-05-05
strong ron led error: 發出 作者 () PE chan
原文鏈接: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) {
//...
}
});
版權聲明:作者寫博是為了總結經驗,和交流學習之用。 如需轉載,請在文章頁面明顯位置給出原文連接。謝謝!如有問題,請留言!
ajax請求狀態碼為0的解決辦法