以下方法是在不刷新请求的情况下同一请求提交一次,若有其它要求可在以下注释掉的方法处修改。
(function ($) {
var pendingRequests = {};
// 所有ajax请求的通用前置filter
$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
// 不重复发送相同请求
var key = generatePendingRequestKey(options);
if (!pendingRequests[key]) {
//storePendingRequest(key, jqXHR);
pendingRequests[key] = jqXHR;
} else {
// or do other
jqXHR.abort();
}
var complete = options.complete;
options.complete = function (jqXHR, textStatus) {
// clear from pending requests
// pendingRequests[key] = null;
//延迟5秒清空数据
/*setTimeout(function(){
delete pendingRequests[key];
},5000);*/
if ($.isFunction(complete)) {
complete.apply(this, arguments);
}
};
});
function generatePendingRequestKey(opts) {
var url = opts.url;
var type = opts.type;
var data = opts.data;
var str = url + type;
if (data) {
str += data;
}
return str;
}
}(jQuery));