Ho una funzione JavaScript che effettua due richieste Ajax consecutive utilizzando jQuery. Voglio assicurarmi che la prima richiesta sia stata caricata prima che venga chiamata la seconda funzione. C'è un modo per farlo?Assicurarsi che la prima funzione Ajax termini prima del secondo
risposta
Specificare async: false
nelle opzioni $.ajax
oppure effettuare la seconda chiamata ajax nella chiamata complete
della prima chiamata.
Non sarebbe 'async: false'? –
Effettivamente. Accidenti a quella logica negativa. –
'async: false' funziona alla grande. L'ordine in cui chiamo le due funzioni varia, quindi è molto preferito il metodo di callback. – Brian
Nella richiamata per la prima funzione, effettuare la seconda chiamata.
Per risultati ottimali, è consigliabile richiamare la seconda funzione nel callback del primo.
Per esempio:
$.post("http://www.somewebsite.com/page.php", function(data) {
// whatever
function2();
});
$.post("script1.php", {data:"val"}, function(response) {
$.post("script2.php", {data:response}, function(results) {
// this second call will be initialized when the first finishes
});
});
Un esempio di implementazione:
function callback() {$('div#second_ajax_output').load('http://www.google.com');}
$('div#first_ajax_output').load('http://www.yahoo.com',callback);
Edit: Misread questione; colpa mia. Se si desidera avere due richieste AJAX eseguite contemporaneamente ma eseguire una richiamata solo dopo che entrambe sono state completate, ecco come si fa!
Prova questa:
var completedCount = 0;
var callback = function()
{
completedCount++;
if (completedCount == 2)
{
// Do something.
}
};
$.post('url-1', {}, callback);
$.post('url-2', {}, callback);
utilizzando jQuery il modo più semplice è come questo:
$.ajax({
type: "POST",
url: "some.php",
success: function(msg){
$.ajax({
type: "POST",
url: "some2.php",
success: function(msg){
alert("End of second call");
}
});
}
});
Il modo più semplice è quello di sparare la seconda richiesta quando i primi ritorni (nel callback completa).
Se avete bisogno di un approccio più sofisticato date un'occhiata al plug-in AjaxQueue. È possibile accodare le richieste in questo modo.
- 1. Attendi che jQuery show() termini prima di continuare la funzione?
- 2. Attendi 1 secondo prima di eseguire la richiesta AJAX onkeyup
- 3. React.js, attendere che setState termini prima di attivare una funzione?
- 4. Programmazione prima, secondo quadro?
- 5. Esegui del codice sempre prima che lo script Perl termini
- 6. Impedire a IIS di uccidere un'attività prima che termini
- 7. assicurarsi che i cambiamenti DOM sono finiti prima di transizione
- 8. jquery .each aspettando che la funzione termini prima di continuare con il ciclo
- 9. Come aspettare che una funzione termini su iOS/Swift, prima di iniziare la seconda
- 10. Ottieni la prima stringa prima del separatore?
- 11. Esegui la funzione prima dell'aggiornamento
- 12. Il thread verrà ucciso prima che l'attività termini in Android?
- 13. Chiamata Dojo prima di AJAX
- 14. AJAX esegue l'evento onchange prima del caricamento della pagina
- 15. Il nodo esce prima che la funzione asincrona venga completata
- 16. Trova la prima versione del pacchetto con la funzione X
- 17. Richiesta AJAX prima che venga inviato il modulo normale
- 18. Test caricamento del contenuto del messaggio prima che la richiesta AJAX sia completata con Capybara
- 19. come assicurarsi di non leggere un file prima di scrivere la scrittura
- 20. Visualizzazione del caricatore Ajax prima del caricamento dei dati
- 21. Esegui codice prima che venga eseguita la funzione chiamata
- 22. Esecuzione della funzione prima che la pagina arrivi a window.print()
- 23. .Prima funzione in R
- 24. simbolo @ prima funzione PHP
- 25. Spazio prima della risposta Ajax (jQuery, PHP)
- 26. Invio di una richiesta Ajax prima del modulo di invio
- 27. Chiamare una funzione prima principale
- 28. Come verificare che una funzione venga chiamata prima di un'altra
- 29. Ajax - Ottieni le dimensioni del file prima di scaricare
- 30. Funzione di esecuzione ionica prima che l'app si chiuda
È la seconda chiamata * Ajax * che deve attendere fino al ritorno del primo, o il secondo * callback * che deve attendere? (es. devi aspettare prima di sparare la seconda richiesta di ajax, o entrambi possono essere sparati uno dopo l'altro, ma vuoi essere sicuro che se il secondo ritorna per primo, la sua callback è bloccata fino a che il primo non ritorna) – Graza
La seconda funzione non dovrebbe essere attivata fino al completamento del primo. La 1a funzione crea un elemento modulo e il 2 prende quel valore del modulo e fa alcuni calcoli basati su di esso. – Brian