ajax請求報錯除錯
ajax請求格式如下
$.ajax({
url: Url,
type: "post",
dataType: "json",
data: params,
success: function (text) {
layer.msg("儲存成功!");
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
layer.msg("儲存失敗, 錯誤碼:" + textStatus);
layer.msg(XMLHttpRequest.status);
layer.msg(XMLHttpRequest.readyState);
layer.msg(textStatus);
}
});
一、error:function (XMLHttpRequest, textStatus, errorThrown)
{
}
(預設: 自動判斷 (xml 或 html)) 請求失敗時呼叫時間。引數有以下三個:XMLHttpRequest 物件、錯誤資訊、(可選)捕獲的錯誤物件。如果發生了錯誤,錯誤資訊(第二個引數)除了得到null之外,還可能是”timeout”, “error”, “notmodified” 和 “parsererror”。
textStatus:
“timeout”, “error”, “notmodified” 和 “parsererror”。
二、error事件返回的第一個引數XMLHttpRequest有一些有用的資訊:
XMLHttpRequest.readyState:
狀態碼
0 - (未初始化)還沒有呼叫send()方法
1 - (載入)已呼叫send()方法,正在傳送請求
2 - (載入完成)send()方法執行完成,已經接收到全部響應內容
3 - (互動)正在解析響應內容
4 - (完成)響應內容解析完成,可以在客戶端呼叫了
三、data:”{}”, data為空也一定要傳”{}”;不然返回的是xml格式的。並提示parsererror.
四、parsererror的異常和Header 型別也有關係。及編碼header(‘Content-type: text/html; charset=utf8’);
此文著重說明一種報錯:
textStatus:”error”
readyState:0
原因:當傳送ajax請求之後,請求未完成,已經切換頁面,等於請求方已經丟失,會產生此錯誤,問題較難發現
解決辦法:傳送請求之後,如要切換頁面,可以切換程式碼放在success回撥方法裡面,或者使用下面的方式
setTimeout(function () {
window.location.href = "url";
},1000);
如果有其他的報錯,請檢查返回值得型別,或者ajax請求地址對應方法是否使用了正確的標籤。如返回物件要加@ResponseBody,等