Comment définir une variable à un AJAX données de réponse?
Je suis à l'aide de jQuery et j'ai le code suivant:
var result = [];
if ( some_condition ) {
result = [...]
} else {
$.ajax({
url: some_url,
data: some_data,
dataType: 'json',
success: function(data) {
items = data
}
});
result = items
}
//Playing with the 'result' variable...
Le code ci-dessus génère l'erreur "items is not defined
" quand some_condition
est false
(je pense qu'il arrive parce que l'étendue de la variable n'est pas correct).
Je voudrais configurer result
variable à l'AJAX données de réponse, mais je ne sais pas comment résoudre le problème.
Note: je suis en train de le faire parce que je voudrais utiliser la result
variable à l'extérieur la if ... else
déclaration (qui est, après la if ... else
énoncé dans le code ci-dessus).
Rappels asynchrones, regarder.
Vous devez déclarer var éléments de même que la variable de résultat avant la condition
essayez
Pouvez-vous me donner un exemple?
En définissant la
Vous devez déclarer var éléments de même que la variable de résultat avant la condition
essayez
var items = data
Pouvez-vous me donner un exemple?
En définissant la
async: false
option pour le $.ajax
permet de travailler, mais c'est la async: false
obsolète?OriginalL'auteur user12882 | 2012-11-23
Vous devez vous connecter pour publier un commentaire.
Tout simplement faire de l'ajax aucune async
Cela signifie que vous ne pouvez rien faire d'autre jusqu'à ce que la demande est faite, toutes les autres opérations ci-dessous l'appel ajax sera arrêté jusqu'à la finition
mettre async: false travaillé pour moi. merci
OriginalL'auteur Flavio
Ce faire:
Depuis que vous êtes en l'appelant asynchrone, vous devez l'assigner dans votre fonction de rappel
Et pour votre meilleure compréhension.
Votre résultat tableau est une variable globale.
result
variable en dehors de laif ... else
déclaration. Toujours avec vous un code qui n'est pas possible.Il devrait être possible, vous avez juste besoin de s'assurer que le rappel a été exécutée (AJAX terminé) avant d'essayer de référence
result
.depuis le résultat est une variable globale, vous pouvez toujours vous y référer
Je suis d'accord avec @MattStone
Pierre - Comment "assurez-vous que le rappel a été exécutée (AJAX terminé) avant d'essayer de référence
result
"? J'ai essayé (comme alex l'a suggéré dans un commentaire précédent) pour définirasync: false
option pour le$.ajax
et ça marche... mais c'est laasync: false
obsolète?OriginalL'auteur Akhil Sekharan