22 Voix

jQuery: Comment attendre la réponse de POST ou GET pour l'écrire à une variable globale

Question de Progger99 | 29/10/2021 à 15:03

Je voudrais charger de nouvelles données avec une fonction de jQuery pour les traiter plus tard dans un endroit différent de mon script global. Ceci est mon code jusqu'à présent:

var num = 0;
 
$.get("myscript.php", {id: id}, function(response){
   num = response;
});
 
alert(num); // toujours 0!!!

Le problème est: peu importe ce que j'ai mettre la variable "num" dans la fonction de recharge, il est toujours 0 à la fin!

Même si je définissais "num" sur quelque chose de différent dans la fonction à la main ou si j'utilise GET à la place de POST, cela ne fonctionne pas! Quelqu'un a-t-il une solution pour ce problème?

RépondrePositifNégatif
2Meilleure Réponse2 Voix

Pour comprendre ce processus, vous devez savoir que les fonctions de jQuery .post() et .get() sont fonctionnant de manière asynchrone.

Cela signifie ce qui suit: lors de l'exécution de .post() ou .get(), le script n'attend pas la réponse ou le résultat de cette fonction. Au lieu de cela, le script continuera immédiatement. Donc, avant que votre variable puisse être réglée sur une autre valeur (le chargement du script prend enfin un peu de temps), la variable est déjà sortie et a donc toujours sa valeur initiale.

Si vous êtes au courant de .post() et .get() sont des simplifications de la fonction .ajax(), vous pouvez simplement utiliser la fonction .ajax() spécifiant plutôt que la fonction ne doit pas être exécutée de manière asynchrone (async:false):

var num = 0;
 
$.ajax({
   type: "GET",
   url: "myscript.php",
   async: false,
   data: {id:id},
   success: function(response) { num = response; }
});
 
alert(num);

Avec cela, il devrait fonctionner. Maintenant, la fonction devrait attendre jusqu'à ce que la valeur soit là.
28/10/2021 à 21:26

RépondrePositif Négatif
Répondre

Sujets Connexes

Avis Important

Veuillez noter: Les contributions publiées sur askingbox.com sont des contributions d’utilisateurs et ne doivent pas remplacer les conseils d’un professionnel. Ils ne sont pas vérifiés par des indépendants et ne reflètent pas nécessairement l’opinion de askingbox.com. Apprendre encore plus.

Participer

Posez votre propre question ou écrivez votre propre article sur askingbox.com. Voici comment.