Sto tentando di visualizzare uno spinner di caricamento durante le chiamate Ajax sulla mia pagina. Voglio scegliere come target diverse chiamate Ajax e mostrare diversi spinners. Allo stato attuale, come ajaxStart è un evento globale, tutte le chiamate ajax finiscono per mostrare tutti gli spinners allo stesso tempo.Targeting di chiamate Ajax specifiche che incorporano AjaxStart/Stop
Questo funziona ... aggiunge la classe "carica" a un div nascosto contenente lo spinner e lo visualizza.
$(document).bind("ajaxStart", function() {
$body.addClass("loading");
});
$(document).bind("ajaxStop", function() {
$body.removeClass("loading");
});
Ora da altre risposte pila ho visto che è possibile aggiungere spazi dei nomi a ajaxstart/stop (jQuery should I use multiple ajaxStart/ajaxStop handling)
...... lungo le linee di
$(document).bind("ajaxStart.secondCall", function() {
$body.addClass("loading2");
});
$(document).bind("ajaxStop.secondCall", function() {
$body.removeClass("loading2");
});
Ma questo non funziona nella sua forma attuale. Tutto il consiglio sarebbe apprezzato ...
UPDATE:
come aggiunta al ILYAS SOLUZIONE e sulla base la sua guida ho implementato l'AJAX AVVIO funcitonality NEL MIO chiamata AJAX ....
function sendResponse(thread_id){
$(document).off(".reference_call");
$(document).on("ajaxStart.secondCall", function() {
$('.spinner').show();
});
$.ajax({
url: 'someURL.php',
type: 'post',
data: {
//data
},
success: function(data) {
$(document).on("ajaxStop.secondCall", function() {
$('.spinner').hide();
});
//do stuff....
} else {
//do stuff....
}
}
});
return false;
}
Sei sicuro che i tuoi callback non si attivino? Qui è semplice [jsfiddle] (http://jsfiddle.net/9yywwsjt/1/) funziona come previsto. –
Iilya, grazie per il tuo commento. Il problema è che voglio che la prima serie di funzioni associ la classe di caricamento al corpo e che la seconda funzione si verifichi per una chiamata ajax separata in un momento separato. Al momento entrambi sono chiamati per qualsiasi chiamata ajax su quella pagina - Capisco perché questo sta accadendo, ma non so come indirizzare diverse chiamate Ajax sulla stessa pagina separatamente – GhostRider
Oh, capisco cosa intendi ora. Quindi, ho 2 domande: puoi spostare la logica su quale spinner visualizzare all'interno dei tuoi callback ajaxStart e ajaxStop? In caso contrario, hai provato a eseguire il binding a eventi ajax prima di inviare la richiesta e quindi di disconnetterti una volta completata la richiesta? –