2012-01-28 14 views

Odpowiedz

18

Można użyć metody $.ajaxSetup() ustawić globalne właściwości AJAX, które będą miały zastosowanie do całej strony:

$.ajaxSetup({ 
    beforeSend: function() { 
     // show progress spinner 
    }, 
    complete: function() { 
     // hide progress spinner 
    } 
}); 
+0

, który działa doskonale! Dziękuję Ci. – LordZardeck

+1

Czy uda się złapać nawet te, które nie używają jQeury lub nie jest to możliwe? – rain01

+1

@ rain01, nie, to złapie tylko żądania jQuery AJAX. –

2

Spróbuj użyć ajaxStart zdarzenie jQuery

+1

I prawdopodobnie używać 'ajaxSend' zamiast jak to jest wyzwalane dla wszystkich żądań AJAX (tylko 1 vs jednym z' ajaxStart'). zobacz także http://stackoverflow.com/questions/3735877/whats-the-difference-between-1-ajaxstart-and-ajaxsend-and-2-ajaxstop- oraz –

+0

Kolejna uwaga: @LordZardeck może chcieć usunąć "ładowanie" ... "pasek postępu, gdy wszystkie żądania ajax kończą się pomyślnie lub zawierają błędy. To jest coś do zrobienia za pomocą '.ajaxError()' i '.ajaxStop()' –

4

Z jakiegoś powodu lub inny $.ajaxSetup() nie pracował dla mnie. Po przeczytaniu przez docs chociaż, znalazłem następujące:

Uwaga: Globalne funkcje zwrotne powinny być ustawione z ich globalnych Ajax-.ajaxStart metod obsługi zdarzeń(), .ajaxStop(), ( .ajaxComplete), .ajaxError(), .ajaxSuccess(), .ajaxSend() - zamiast w obiekcie opcji dla $ .ajaxSetup().

Spróbuj $.ajaxStart() i $.ajaxComplete() zamiast:

$(document).ajaxStart(function() { 
    console.log('Request Initiated'); 
}); 
$(document).ajaxComplete(function() { 
    console.log('Request Complete'); 
}); 
Powiązane problemy