To odpowiedź na pytanie jest powiązany co pracował dla mnie:
https://stackoverflow.com/a/10701856/5114
Uwaga pierwsza linia gdzie @grr mówi: „Korzystanie ajaxSetup nie jest prawidłowa”
można dostosować jego odpowiedź, aby dodać własną funkcję do okna, jeśli chcesz ją nazwać samodzielnie, zamiast używać window.onbeforeunload
, tak jak oni.
// Most of this is copied from @grr verbatim:
(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});
});
// I changed the name of the abort function here:
window.abortAllMyAjaxRequests = function() {
$.each(xhrPool, function(idx, jqXHR) {
jqXHR.abort();
});
};
})(jQuery);
Następnie można zadzwonić pod numer window.abortAllMyAjaxRequests();
, aby przerwać wszystkie. Upewnij się, że dodajesz .fail(jqXHRFailCallback)
do żądań ajax. Callback dostanie „przerwać” jako textStatus
więc wiesz, co się stało:
function jqXHRFailCallback(jqXHR, textStatus){
// textStatus === 'abort'
}
możliwe duplikat [Zatrzymanie wszystkich aktywnych żądań AJAX w jQuery] (http://stackoverflow.com/questions/1802936/stop-all- active-ajax-requests-in-jquery) – Shoban
@ shoban, ale myślę, że Robert pyta, czy istnieje sposób, jeśli nie masz do nich dostępu. – 7wp
To pytanie może dostarczyć ci tego, czego szukasz http://stackoverflow.com/questions/1802936/stop-all-active-ajax-requests-in-jquery – codingbadger