//事件觸發順序ajaxStart,ajaxSend,ajaxSuccess或ajaxError,ajaxComplete,ajaxStop
$(document).ajaxStart(function (event) {
/*
* 每一個ajax即將發送的時候觸發該事件,只有一個事件對象參數
*/
console.log('ajaxStart');
})
$(document).ajaxSend(function (event,xhr,opts,err) {
/*
* 每一個ajax即將發送的時候觸發該事件
* 此方法接受四個參數,分別是事件對象,XHR對象,和發起ajax請求的配置對象,錯誤信息
*/
if(opts.type == 'get'){
xhr.abort();
}
})
$(document).ajaxSuccess(function (event,xhr,opts) {
/*
* 此方法接受三個參數,分別是事件對象,XHR對象,和發起ajax請求的配置對象
* 每一個ajax請求成功都會觸發該事件
* 配置對象中的success回調會先執行,然后再執行這個事件
*/
console.log(JSON.parse(xhr.responseText))
})
$(document).ajaxError(function (event,xhr,opts,err) {
/*
* 此方法接受四個參數,分別是事件對象,XHR對象,和發起ajax請求的配置對象,錯誤信息
* 每一個ajax請求失敗都會觸發該事件
* 配置對象中的error回調會先執行,然后再執行這個事件
* 如果是客戶端錯誤導致請求失敗,err的值有可能是timeout,error,abort,或者是拋出錯誤異常對象
*/
console.log(err)
})
$(document).ajaxComplete(function (event,xhr,opts) {
/*
* 此方法接受三個參數,分別是事件對象,XHR對象,和發起ajax請求的配置對象
* 每一個ajax請求完成都會觸發該事件,不管請求的結果如何
* 配置對象中的complete回調會先執行,然后再執行這個事件
*/
})
$(document).ajaxStop(function (event) {
/*
* 此方法只接受一個事件對象參數,此事件只觸發一次
* 當所有ajax請求完成的時候調用一次,不管ajax請求的狀態是失敗還是成功或是被取消
*/
})
注意:ajaxStart和ajaxSend事件必須放在ajax請求代碼之前,不然不會觸發