Partage
  • Partager sur Facebook
  • Partager sur Twitter

Question sur la fonction eval en javascript

    26 avril 2009 à 18:28:12

    Bonjour tout le monde,

    J'ai ce retour de PHP (AJAX) :

    Citation : Pas de titre

    {"PHAR-J-302":"PHAR-J-302","PHAR-J-304":"PHAR-J-304"}



    Après avoir passé dans eval, le résultat de ceci :

    alert(MesOption);
    


    est :

    Citation : Pas de titre

    object object



    Je me demandais à quoi servais eval en javascript ?

    Comment il fonctionne dans mon code, à quoi sert-il dans mon code ?

    Est-il possible de m'expliquer ce code qui va avec svp ? :

    for (key in MesOption) 
    					{
    						LeTexte = MesOption[key];
    						LaValeur = key;
    						var NewOption = document.createElement('option');
    						NewOption.value = LaValeur;
    						NewOption.innerHTML=LeTexte;
    						
    						document.getElementById('select_Nom_mnemonics').appendChild(NewOption);
    					}
    


    Un grand merci d'avance.

    beegees

    • Partager sur Facebook
    • Partager sur Twitter
      26 avril 2009 à 19:11:07

      J'ai envie de dire...

      D'où vient ton code ? Est-ce toi qui l'a écrit ? Si oui, comment se fait-il que tu ne le comprennes pas ? :-°

      Et enfin... eval, c'est mal.

      Renseigne-toi sur le JSON ;)
      • Partager sur Facebook
      • Partager sur Twitter
        26 avril 2009 à 19:12:33

        Salut,

        Ce n'est pas moi qui l'a écrit.

        donc eval c'est du json ?

        Merci encore.

        beegees
        • Partager sur Facebook
        • Partager sur Twitter
          26 avril 2009 à 19:20:35

          Non, je crois que ce que tu passes dans la fonction eval(), c'est du JSON.

          Et sur certains navigateurs, il est possible de traiter ce JSON sans passer par eval ! (Et c'est bien !)

          Et il y a une fonction toute prête pour le faire, quelque part sur le net, je crois...
          • Partager sur Facebook
          • Partager sur Twitter
            26 avril 2009 à 20:45:58

            Bah eval, cay le mal !

            Ca c'est dit... ensuite...
            Je vais quand même t'expliquer comment fonctionne cette ***** :
            Si tu as une chaîne :
            var chaine="aze";
            

            Et que tu veux par exemple créer une variable qui a pour nom la valeur de cette variable, tu peux faire comme ça :
            eval("var "+chaine+"='valeur'");
            

            En gros, ça permet de générer du code javascript et de l'exécuter...

            Mais en fait, ça va beaucoup plus lentement que les autres méthodes... et ça n'est quasiment jamais adapté...
            Exemple pour le code présent plus haut :
            var window[chaine]='valeur';
            

            parce que toute les variables globales sont des enfants de l'objet window...

            Bref eval, tu peux boulier et tu ne dois jamais l'utiliser...
            Dans certains cas, tu devras utiliser les closures et autres... mais tu n'en est pas encore là... et si un jour tu pense devoir recourir à eval, passe par ce forum et demande... tu verras qu'on t'aiguillera toujours vers autre chose.
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              26 avril 2009 à 23:08:56

              Pour le json t'as un début de réponse à comment le traiter dans le tuto de ma signature : dans la partie sur eval justement.

              eval c'est une méthode qui te permet d'acceder au compilateur javascript du navigateur.

              Rigoureusement ça va pas plus lentement, mais l'appel a cette fonction met un certain temps puisqu'on "démarre" le compilateur javascript. Mais dans les faits, c'est plus lent que du bon javascript.
              • Partager sur Facebook
              • Partager sur Twitter

              Question sur la fonction eval en javascript

              × 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