Le richieste AJAX producono una serie di eventi che possono essere catturati dall'utente. Importante è l'ordine di trasmissione di questi eventi, che perciò in quest'articolo affronteremo. jQuery divide gli eventi AJAX in due tipi di eventi:
- eventi locali: tali eventi sono riferiti ad una particolare chiamata AJAX e solitamente sono scritti come parametri della funzione $.ajax().
Es:
$.ajax({ beforeSend: function(){ // cosa fare quando avviene l'evento beforsend }, complete: function(){ // cosa fare quando la richiesta è completa } // ...... });
- eventi globali: quest eventi vengono trasmessi a tutti gli elementi del DOM, non ad uno particolare.
Es:
$("#loading").bind("ajaxSend", function(){ $(this).show(); }).bind("ajaxComplete", function(){ $(this).hide(); });
Ecco l'elenco completo di tutti gli eventi AJAX e nell'ordine in cui questi vengono trasmessi. Gli eventi ajaxStart e ajaxStop interessano le chiamate AJAX tutte insieme, gli altri invece una singola chiamata.
- ajaxStart (globale): questo evento è attivato quando una chiamata AJAX comincia e nessun'altra chiamata concorrente è in esecuzione;
- beforSend (locale): questo evento è attivato prima che una chiamata AJAX cominci e permette di effettuare modifiche ad esempio agli headers dell'oggetto XMLHttpRequest;
- ajaxSend (globale): evento attivato prima che la richiesta sia in esecuzione. Uguale a prima ma è un evento globale;
- success (locale): evento attivato solo se la chiamata ha successo, cioè senza errori provenienti dal server o errori nei dati di ritorno;
- ajaxSuccess(globale): equivalente dell'evento di prima, ma è un evento globale;
- error (locale): evento attivato se e solo se avviene un errore;
- ajaxError (globale): come error ma globale;
- complete (locale): evento attivato quando una chiamata AJAX è completata, indipendentemente se con successo o con errore. Anche per chiamate sincrone.
- ajaxComplete (globale): come complete, ma globale;
- ajaxStop (globale): attivato quando non ci sono più richieste AJAX da processare.
Attenzione ad utilizzare bene gli eventi globali o quelli locali, a seconda delle chiamate di interesse. Per maggiori dettagli rimandiamo alla guida ufficiale.
|