jQuery.ajaxPrefilter() 是 jQuery 中的 Ajax 前置過濾器,可以用來前置處理關於 Ajax 的相關設定 (option).

sample code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var pendingRequests = {};
// 所有ajax請求的通用前置filter
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {

var key = options.url;

// 請求是否已經存在.
if (!pendingRequests[key]) {
pendingRequests[key] = jqXHR;
}else{
//如果ajax請求已經存在,下一次相同的請求則取消,防止重複請求
// 1. 放棄後觸發的提交
jqXHR.abort();
// or
// 2. 放棄先觸發的提交
//pendingRequests[key].abort();
}

// ajax請求完成時,從臨時對象中清除請求對應的數據.
var complete = options.complete;
options.complete = function(jqXHR, textStatus) {
pendingRequests[key] = null;
if ($.isFunction(complete)) {
complete.apply(this, arguments);
}
};
});
捕捉 abort 的異常信息
1
2
3
4
5
6
7
8
var ajax = $.ajax({
'error':function(jqXHR, textStatus, errorThrown){
if(errorThrown != 'abort'){
//ajax被調用abort後執行的方法
alert('您的ajax方法被停止了');
}
}
})

參考資料