jquery ajax 全局 去重 攔截

// 1: 放棄后觸發的提交
// 2: 放棄先觸發的提交
    var Ajax_Unique_Status_Arr = [1, 2];

    var pendingRequests = {};
        $.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
            var Ajax_Unique_Status = options.unique;
                //這里的Ajax_Url可以針對post請求, 提取{url, data} 的object指紋;
            var Ajax_Url = options.url;
            
            console.log(options, originalOptions, jqXHR);

            // 若無需,直接return;
            if (Ajax_Unique_Status_Arr.indexOf(Ajax_Unique_Status) === -1) {
                return;
            }

            // 去重處理
            if (!pendingRequests[Ajax_Url]) {
                pendingRequests[Ajax_Url] = jqXHR;
            }else{
                if (Ajax_Unique_Status === Ajax_Unique_Status_Arr[0]) {
                    jqXHR.abort(); 
                    console.log('abort current request , url is : ', Ajax_Url);
                } else if (Ajax_Unique_Status === Ajax_Unique_Status_Arr[1]) {
                    pendingRequests[Ajax_Url].abort();
                    console.warn('abort last request , url is : ', Ajax_Url);
                }
            }

            // 后期處理
            var complete = options.complete;
            options.complete = function(jqXHR, textStatus) {
                pendingRequests[Ajax_Url] = null;
                if ($.isFunction(complete)) {
                    complete.apply(this, arguments);
                }
            };
        });


        var url = 'http://www.grycheng.com/2016/01/07/%E7%AE%80%E8%BF%B0jquery-ajax%E7%9A%84%E6%89%A7%E8%A1%8C%E9%A1%BA%E5%BA%8F/';

        $.ajax({
            url,
            type: 'GET',
            // unique: 1,
            complete : ()=>{
                console.log('complete 1')
            }
        }).then((res)=>{
            console.log('success 1')
        }, (err)=>{
            console.log('error 1')
        })


        $.ajax({
            url,
            type: 'POST',
            // unique: 1,
        }).complete((res)=>{
            console.log('complete 22222', res)
        })
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容