Partage
  • Partager sur Facebook
  • Partager sur Twitter

[jQuery/JSON] Probléme json et $.getJson

Sujet résolu
    16 mars 2018 à 12:01:24

    Bonjour a tous ,

    J'ai un soucis avec un $.getJSON et un fichier json , le problème est que le premier console.log m'affiche bien "fr" mais le deuxième m'affiche "undefined" ,désolé si cette question est simple mais j'y arrive pas :D

    Le fichier JS :

    var obj;
        $.getJSON("../WaKeZino/ressources/configBase.json",function(data){
            obj = data.languageActuel;
            console.log(obj);
        });
        console.log(obj);
    Le fichier Json :
    {
      "languageActuel":"fr",
      "version":"0.0.1"
    }

    -
    Edité par francoiseric 16 mars 2018 à 12:03:07

    • Partager sur Facebook
    • Partager sur Twitter
      16 mars 2018 à 12:14:05

      Ton appel est asynchrone. Le console.log hors de la fonction est appelé avant celui dans la fonction.
      • Partager sur Facebook
      • Partager sur Twitter
      /!\ Si je cesse de répondre c'est parce que vous êtes venus poster sans avoir suivi les cours de base sur le sujet. /!\
        16 mars 2018 à 12:20:02

        D'accord , merci , mais je voudrais retourner cette valeur , dois-je le faire de cette maniére ?

        $.getJSON("../WaKeZino/ressources/configBase.json",function(data){
                var obj;
                obj = data.languageActuel;
                return obj;
            });



        • Partager sur Facebook
        • Partager sur Twitter
          16 mars 2018 à 12:21:48

          Nope. C'est une fonction callback, ton retour va se perdre et ne sera jamais récupéré nul part. Définis le code à exécuter quand la fonction a fini, directement dans cette fonction. Si ça fait trop de code, mets le dans une fonction et appelle la:

          $.getJSON("../WaKeZino/ressources/configBase.json",function(data){
                  var obj;
                  obj = data.languageActuel;
                  fonctionAAppelerQuandLaRequeteAReussi(obj);
              });



          -
          Edité par Genroa 16 mars 2018 à 12:23:16

          • Partager sur Facebook
          • Partager sur Twitter
          /!\ Si je cesse de répondre c'est parce que vous êtes venus poster sans avoir suivi les cours de base sur le sujet. /!\
            16 mars 2018 à 12:30:04

            D'accord , merci mais quand j’appelle la fonction ça me retourne rien 

            La page ou les deux sont appelés :

            <!DOCTYPE html>
            <html lang="en">
            <head>...</head>
            <body>...</body>
            <script src="js/jquery-3.3.1.min.js"></script>
            <script src="js/baseJS.js"></script>
            <script src="js/language.js"></script>
            </html>

            Le fichier baseJS :

            function recupLanguage() {
                $.getJSON("../WaKeZino/ressources/configBase.json",function(data){
                    var obj;
                    obj = data.languageActuel;
                    retour(obj);
                });
            }
            
            function retour(valeur) {
                return valeur;
            }


            La ou j’essaie de le récupérer (language.js):

            $(document).ready(function (){
                var t = recupLanguage();
                alert(t);
            });

            Mais çà me remets undefined


            -
            Edité par francoiseric 16 mars 2018 à 12:31:28

            • Partager sur Facebook
            • Partager sur Twitter
              16 mars 2018 à 13:09:47

              Tu ne sembles pas comprendre ce qu'est une exécution "asynchrone"... recupLanguage ne renvoie rien, elle fait une requête asynchrone. Quand c'est terminé, la requête appelle retour, qui...retourne dans le vide une valeur. Le alert devrait être dans la fonction retour, qui ne devrait pas retourner quoi que ce soit.

              -
              Edité par Genroa 16 mars 2018 à 13:22:47

              • Partager sur Facebook
              • Partager sur Twitter
              /!\ Si je cesse de répondre c'est parce que vous êtes venus poster sans avoir suivi les cours de base sur le sujet. /!\
                16 mars 2018 à 13:14:02

                Ah , parce que le soucis c'est que je voudrais sauvegarder cette valeur pour éviter de faire des requêtes sur chacune de mes pages.

                Merci de m'avoir aidé.

                Edit : J'ai trouvé comment faire j'ai stocké cette valeur dans une div qui est cachée

                -
                Edité par francoiseric 16 mars 2018 à 13:19:30

                • Partager sur Facebook
                • Partager sur Twitter
                  16 mars 2018 à 13:23:26

                  Euh sinon, manière propre, tu stockes ça dans le localStorage... Histoire de ne pas faire du web des années 90. >_<

                  Tu peux parfaitement stocker la valeur retournée, mais dans un stockage général, et ton code doit prévoir le fait qu'au début la variable est à null ou undefined, et qu'à la résolution de la requête, sa valeur va changer. Tu ne peux juste pas penser ton code comme une simple suite d'instructions.

                  -
                  Edité par Genroa 16 mars 2018 à 13:24:47

                  • Partager sur Facebook
                  • Partager sur Twitter
                  /!\ Si je cesse de répondre c'est parce que vous êtes venus poster sans avoir suivi les cours de base sur le sujet. /!\
                    16 mars 2018 à 13:27:32

                    Pas faux ^^ , c'est ce que je vais , merci de m'avoir aidé ;)

                    Ta technique fonctionne nickel merci

                    -
                    Edité par francoiseric 16 mars 2018 à 13:32:49

                    • Partager sur Facebook
                    • Partager sur Twitter

                    [jQuery/JSON] Probléme json et $.getJson

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown