Goog Morning, tout le monde.
J’ai encore quelques problèmes en essayant d’utiliser des tableaux qui ont été obtenus à partir de php. Le problème est que lorsque je reçois un tableau, je ne peux pas l’utiliser hors de la “fonction de réussite”. C’est donc ce qui se passe.
Je crée une var appelée “langs” pour sauvegarder les informations du tableau:
var langs=[];
Ensuite, lorsque j’utilise console.log pour le succès de la fonction INSIDE des informations du tableau d’impression, mon code ressemble à ceci:
$.ajax({ type: 'POST', url: '/ws/languagesForJs', dataType: 'json', success: function(result) { langs=result; console.log(result) }, });
Cela fonctionne très bien !! Je peux voir les informations du tableau. Cela ressemble à ceci:
Object {es: Object, en: Object} en: Object lang_ext_name: "en_US" lang_id: 2 lang_iso: "en" lang_name: "Inglés" lang_url: "en" __proto__: Object es: Object lang_ext_name: "es_PE" lang_id: 1 lang_iso: "es" lang_name: "Español" lang_url: "es" __proto__: Object __proto__: Object
CEPENDANT, lorsque j’utilise console.log pour le succès de la fonction OUTSIDE des informations du tableau d’impression:
$.ajax({ type: 'POST', url: '/ws/languagesForJs', dataType: 'json', success: function(result) { langs=result; }, }); console.log(result)
Ça revient juste;
[]
Sincèrement, je ne sais pas pourquoi cela se produit. Peut-être que je manque la théorie de quelque fonction ou quelque chose. J’ai cherché des informations sur le Web, mais il semble que personne n’ait besoin d’un tableau en dehors des fonctions de réussite. Je n’ai trouvé aucune information à ce sujet.
J’espère que quelqu’un pourra m’aider. Merci
Btw: Désolé pour mon mauvais anglais. Ce n’est pas ma langue maternelle.
Il y a 2 problèmes ici.
Le result
est une variable locale. Vous devez créer une référence en dehors de votre appel ajax. Vous pourrez ainsi la référencer sans problème.
Essaye ça:
var myResult; $.ajax({ type: 'POST', url: '/ws/languagesForJs', dataType: 'json'}) .done(function(result) { myResult = result; // save a reference langs = result; }) .always(function() { console.log(myResult); });
Je devrais également mentionner que le success
est déconseillé et que vous devriez aller plutôt pour le travail done
. Le callback always
est appelé comme les noms le disent toujours pour que vous puissiez y mettre du code qui doit être exécuté lorsque l’appel asynchrone est terminé.
J’espère que ça aide.