J'ai une fonction JavaScript qui fait deux requêtes Ajax consécutives en utilisant jQuery. Je veux m'assurer que la première requête a été chargée avant l'appel de la deuxième fonction. Y a-t-il un moyen de le faire?Assurez-vous que la première fonction ajax se termine avant la seconde
Répondre
Spécifiez async: false
dans les options $.ajax
ou effectuez le deuxième appel ajax dans le rappel complete
du premier appel.
Ne serait-ce pas 'async: false'? –
En effet, il le ferait. Darn cette logique négative. –
'async: false' fonctionne très bien. L'ordre dans lequel j'appelle les deux fonctions varie, donc il est préférable à la méthode de rappel. – Brian
Dans votre rappel pour la première fonction, effectuez votre deuxième appel.
Pour de meilleurs résultats, vous devez probablement appeler la deuxième fonction dans le rappel du premier.
Par exemple:
$.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 exemple d'implémentation:
function callback() {$('div#second_ajax_output').load('http://www.google.com');}
$('div#first_ajax_output').load('http://www.yahoo.com',callback);
Edit: Misread la question; ma faute. Si jamais vous voulez que deux requêtes AJAX soient exécutées simultanément mais que vous n'effectuiez un rappel qu'une fois toutes les deux terminées, voici comment vous le faites!
Essayez ceci:
var completedCount = 0;
var callback = function()
{
completedCount++;
if (completedCount == 2)
{
// Do something.
}
};
$.post('url-1', {}, callback);
$.post('url-2', {}, callback);
En utilisant jQuery la façon la plus simple est comme ceci:
$.ajax({
type: "POST",
url: "some.php",
success: function(msg){
$.ajax({
type: "POST",
url: "some2.php",
success: function(msg){
alert("End of second call");
}
});
}
});
La méthode simple consiste à tirer la deuxième demande lorsque les premiers retours (dans le rappel complet).
Si vous avez besoin d'une approche plus sophistiquée, jetez un oeil au plug-in AjaxQueue. Vous pouvez mettre en file d'attente des demandes de cette manière.
- 1. JQuery .ajax entre succès avant d'appeler la page se termine
- 2. Délai ASP.NET AJAX bien que la demande se termine bien avant la durée du délai
- 3. La fonction s'exécute sans attendre que le précédent se termine
- 4. Attendez que jQuery show() se termine avant de continuer la fonction?
- 5. Comment faire pour que jQuery attende qu'un appel Ajax se termine avant qu'il ne retourne?
- 6. La fonction Haskell ne se termine pas
- 7. L'appel Ajax distant dans la fonction jQuery .click() ne se termine pas avant d'aller à la page suivante
- 8. zend framework: attendre que la requête se termine avant de commencer
- 9. Attendez que CLLocationManager se termine avant de tweeter
- 10. Déclencher un événement secondes avant que la vidéo se termine dans flowplayer?
- 11. obtenir des résultats de script php via la fonction charge jquery() avant script php se termine
- 12. Attendez que la page se termine chargement - application Windows Form
- 13. joue un son de tick quand une seconde se termine
- 14. Comment indiquer à PowerShell d'attendre que chaque commande se termine avant de commencer la suivante?
- 15. Fonction en java ne se termine pas
- 16. Que signifie chaque fois qu'une fonction se termine par}) (jQuery) ;?
- 17. Alors que la boucle ne se termine jamais
- 18. comment la chaîne se termine en Java?
- 19. La macro EnvironmentEvent ne se termine pas
- 20. Ajax UpdatePanelAnimationExtender ne fonctionne que sur la première utilisation
- 21. Comment faire pour que jQuery load() se termine avant fadeOut/fadeIn?
- 22. Ajax: attendre X secondes avant que la charge
- 23. Recharger lorsque la fonction setTimeout termine
- 24. La requête se termine sans réponse
- 25. Attendez que le programme se termine
- 26. Comment puis-je garantir que la fonction renvoie une valeur avant que le thread secondaire créé ne termine son travail?
- 27. mises à jour bibliothèques statiques, maintenant l'application se termine avant tout sur la pile. Comment déboguer
- 28. jQuery feux de gestionnaire ajaxError() si l'utilisateur quitte la page avant la page se termine le chargement
- 29. Appel ajax imbriqué Jquery se souvenir de la première réponse HTML dans l'appel ajax interne
- 30. Fonction jQuery ne se termine pas/Avia Slider
Est-ce le deuxième appel * Ajax * qui doit attendre jusqu'à ce que le premier soit retourné, ou le deuxième * callback * qui doit attendre? (c'est-à-dire que vous devez attendre avant de déclencher la deuxième requête ajax, ou vous pouvez être renvoyé l'un après l'autre, mais vous voulez vous assurer que si le second retourne en premier, son rappel est bloqué jusqu'à ce que le premier – Graza
La 2e fonction ne doit pas être déclenchée tant que la première n'est pas terminée. La première fonction crée un élément de formulaire et la seconde prend cette valeur de formulaire et effectue certains calculs sur celle-ci. – Brian