IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] La fonction eval transforme ma string en objects


Sujet :

AJAX

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut [AJAX] La fonction eval transforme ma string en objects
    Bonjour à tous,

    J'utilise json pour remplacer le contenu de mes listes déroulantes afin que ça fonctionne avec tous les browsers (surtout avec IE).

    Pour cela, j'utilise ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    switch($arr[0])
    	{
    		case 'neuro_irm_emplacements':
    		{
    			$sql = "SELECT * FROM ".$arr[0]." WHERE ID_regions = ". $arr[1]." ORDER BY Nom";
    		}
    	}
     
    	$req = mysql_query($sql);
     
    	$return = '';
    	$return.= '[{valeur :"", text: "Places"},';
     
    	while($res = mysql_fetch_array($req))
    	{
    		$return.= '{valeur:'.$res["ID"].',text:"'. $res["Nom"].'"},';
     
     
    	}
    //je remplace la derniere virgule par la ) dans la variable $return		
    	$return=preg_replace("/,$/","]",$return);
    	//je retourne le rsultat a AJAX
    	echo $return;
    retourne donc une chaine à js de ce genre :

    [{valeur :"", text: "Places"},{valeur:13,text:"Brainstem"},{valeur:11,text:"Cereb

    Hemis"},{valeur:12,text:"Cereb Angle"},{valeur:15,text:"Intraventriculaire"},{valeur:14,text:"Spinal Cord"},{valeur:10,text:"Vermis"}]
    J'ai ensuite ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    LeRetour = trim(xhr.responseText);
    			emptySel(document.getElementById(arr[2]));
    			MesOption=eval("(" + LeRetour + ")");
    Jusqu'à maintenant, ça fonctionnait parfaitement.

    Mais une alerte de MesOption m'indique ceci :

    [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
    J'avoue ne pas bien comprendre.

    On m'a déjà dit que "eval" était déprécié, j'en profite donc pour vous demander si il n'y a pas un autre moyen de procéder ?

    Je vous en remercie d'avance.

    beegees

  2. #2
    Développeuse forum
    Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Points : 1 420
    Points
    1 420
    Par défaut
    (vu sur le chat)

    en testant ceci :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(MesOption[0].text);

    on a pu vérifier que l'on récupérer le 1er élément du tableau, donc ton code fonctionne.

    Si tu obtiens une suite de object, ceci est normal, c'est comme-ci tu faisait un echo d'une variable sans lui passer le tableau...

    exemple qui te renverra un array :
    exemple qui te renverra ton tableau :
    En gros, là, en faisant ton alert, tu n'affiche que le type de la structure...

    Donc, la solution trouvé ensemble est d'ajouter l'élément de ton tableau qui est .text :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    LeTexte = MesOption[key].text;


  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Re,

    J'ai trouvé avec l'aide de Atomya Rise.

    Il fallait juste mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LeTexte = MesOption[key].text;
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LeTexte = MesOption[key];
    Une fois de plus, un problème s'est résolu en 5 minutes sur le chat, vive anochat

    beegees

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    oui eval c'est pas le pied cherche sur le forum
    JSON.parse
    il y a pas mal de sujet

    quant à ton alert c'est comme si en php tu faisait
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $a = array(array('a'=>1), array('a'=>2), array('a'=>3));
    echo $a
    cela ne t'affichera pas une chaine de caractère
    de même n'affichera pas le contenu de l'objet a[0]


    un point sur ton php car c'est vraiment pas top ce que tu fais

    Déjà c'est beurk est je connais des boit où to appli ne passerait pas en qualif juste à cause de ça

    Jamais de
    Mais c'est sur ta façon de le traiter qui n'est pas super
    construire une chaine à la main c'est dangereux et peut évolutif.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    switch($arr[0])
    {
      case 'neuro_irm_emplacements':
      {
        $sql = "SELECT ID AS valeur, Nom AS text FROM ".$arr[0]." WHERE ID_regions = ". $arr[1]." ORDER BY Nom";
      }
    }
     
    $req = mysql_query($sql);
    $result = array();
    while($res = mysql_fetch_array($req)){
      $result.push($res);
    }
    echo json_encode($result);

    A+JYT

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/02/2013, 05h15
  2. Transformer un String en décimal,fonction personelle.
    Par idefix_11 dans le forum Débuter
    Réponses: 15
    Dernier message: 08/02/2008, 10h14
  3. Transformer une String en fonction
    Par Jevil dans le forum MATLAB
    Réponses: 12
    Dernier message: 07/02/2008, 23h46
  4. [String] équivalent de la fonction eval() en javascript
    Par jeyce dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 01/09/2004, 08h42
  5. Transformer un String en InputStream
    Par felix79 dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 07/07/2004, 12h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo