Использование ajaxSetup is not correct, как было отмечено на своей странице док. Он устанавливает только значения по умолчанию, и если некоторые запросы переопределяют их, будет беспорядок.
Я опоздал на вечеринку, но только для справки о будущем, если кто-то ищет решение той же проблемы, вот мой взгляд на нее, вдохновленный и в значительной степени идентичный предыдущим ответам, но более полный
// Automatically cancel unfinished ajax requests
// when the user navigates elsewhere.
(function($) {
var xhrPool = [];
$(document).ajaxSend(function(e, jqXHR, options){
xhrPool.push(jqXHR);
});
$(document).ajaxComplete(function(e, jqXHR, options) {
xhrPool = $.grep(xhrPool, function(x){return x!=jqXHR});
});
var abort = function() {
$.each(xhrPool, function(idx, jqXHR) {
jqXHR.abort();
});
};
var oldbeforeunload = window.onbeforeunload;
window.onbeforeunload = function() {
var r = oldbeforeunload ? oldbeforeunload() : undefined;
if (r == undefined) {
// only cancel requests if there is no prompt to stay on the page
// if there is a prompt, it will likely give the requests enough time to finish
abort();
}
return r;
}
})(jQuery);
Да, да, и http://plugins.jquery.com/project/ajaxqueue может помочь. – umpirsky
THXs, я добавил FLAG, потому что я использовал несколько запросов одновременно – jcho360
вот простой рабочий пример: http://stackoverflow.com/a/42312101/3818394 –