1. 程式人生 > >ajax請求報錯除錯

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,等