ajax請求中的6個全局事件


//事件觸發順序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請求代碼之前,不然不會觸發


免責聲明!

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



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