Appels AJAX asynchrones et valeurs de retour variables
Lorsque vous utilisez AJAX pour effectuer des requêtes asynchrones, il est important de comprendre comment fonctionnent les valeurs de retour variables. Dans le scénario décrit, une fonction dans un fichier JavaScript distinct effectue un appel AJAX mais la valeur renvoyée n'est pas définie correctement.
Description du problème
La fonction get_data dans un fichier JavaScript séparé effectue une requête AJAX et vise à renvoyer les données reçues du serveur. Cependant, cette approche ne fonctionne pas car l'appel AJAX est asynchrone.
Explication
Les appels AJAX asynchrones n'attendent pas le retour de la réponse avant de poursuivre l'exécution de la fonction appelante. Dans ce cas, la fonction get_data revient avant que la requête AJAX ne soit terminée, ce qui entraîne une variable de test vide.
Solution
Pour résoudre ce problème, nous devons gérer la nature asynchrone d'AJAX. Cela peut être fait en fournissant une fonction de rappel à la fonction get_data, qui sera exécutée lorsque la requête AJAX sera terminée et que les données seront disponibles.
Voici le code mis à jour :
function get_data(data, destination, callback) { if (lock_get == 0) { lock_get = 1; $.ajax({ type: "POST", url: destination, async: true, data: data, success: function(data) { lock_get = 0; if (data && callback) { callback(data); } } }); } }
Utilisation
La fonction mise à jour get_data doit être appelée avec la fonction de rappel comme troisième argument :
get_data(data, destination, function(test){ notice(test); });
En utilisant une fonction de rappel, le code peut désormais gérer le résultat de la requête AJAX lorsqu'elle devient disponible.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!