Maison >interface Web >js tutoriel >Pourquoi ma fonction AJAX ne renvoie-t-elle pas de variable et comment puis-je la corriger à l'aide de rappels ?
Variable non renvoyée par la fonction AJAX
Lors de la division d'un framework en plusieurs fichiers, vous pouvez rencontrer un problème où une variable n'est pas renvoyée à partir d'une fonction AJAX. Bien que la variable ne soit pas vide dans le fichier JS, elle apparaît vide dans l'exécution principale.
Modèle de fonction original :
var lock_get = 0; function get_data(data, destination) { if (lock_get == 0) { lock_get = 1; $.ajax({ type: "POST", url: destination, async: true, data: data, success: function(data) { lock_get = 0; if (data) { return data; } } }); } };
Exécution :
var test = get_data(data, destination); notice(test);
Dans l'approche originale, la fonction get_data tente de renvoyer le résultat de l'appel AJAX, mais échoue en raison de la nature asynchrone d'AJAX.
Solution : Utilisation des rappels
Pour résoudre ce problème, vous pouvez utiliser les rappels. En passant une fonction de rappel à get_data, le résultat peut être géré et renvoyé :
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); } } }); } };
Exécution (avec rappel) :
get_data(data, destination, function(test) { notice(test); });
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!