Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/06/2011, 18h51   #1
Membre Expert
 
Avatar de beegees
 
Homme David Vincent (l'homme qui a vu les extra-terrestres)
Développeur Web
Inscription : mars 2004
Messages : 3 239
Détails du profil
Informations personnelles :
Nom : Homme David Vincent (l'homme qui a vu les extra-terrestres)
Âge : 37
Localisation : Belgique

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

Informations forums :
Inscription : mars 2004
Messages : 3 239
Points : 1 046
Points : 1 046
Par défaut 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 :
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 :

Citation:
[{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 :
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 :

Citation:
[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
__________________
beegees est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 21h16   #2
Membre Expert
 
Avatar de Atomya Rise
 
Femme Emilie Lefol
En recherche d'emploi
Inscription : février 2009
Messages : 411
Détails du profil
Informations personnelles :
Nom : Femme Emilie Lefol
Âge : 26
Localisation : France, Somme (Picardie)

Informations professionnelles :
Activité : En recherche d'emploi
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2009
Messages : 411
Points : 1 277
Points : 1 277
(vu sur le chat)

en testant ceci :
Code javascript :
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 :
LeTexte = MesOption[key].text;

__________________

Si un message vous a aidé, pensez à voter positivement pour lui ! Merci
Pas de question technique en privé
- Si on criait sur la place publique les fautes de tout le monde, on ne pourrait plus fréquenter personne ! (Marcel Pagnol)
- Technocrates, c’est les mecs que, quand tu leur poses une question, une fois qu’ils ont fini de répondre, tu comprends plus la question que t’as posée. (Coluche)
Atomya Rise est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 03/06/2011, 21h16   #3
Membre Expert
 
Avatar de beegees
 
Homme David Vincent (l'homme qui a vu les extra-terrestres)
Développeur Web
Inscription : mars 2004
Messages : 3 239
Détails du profil
Informations personnelles :
Nom : Homme David Vincent (l'homme qui a vu les extra-terrestres)
Âge : 37
Localisation : Belgique

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

Informations forums :
Inscription : mars 2004
Messages : 3 239
Points : 1 046
Points : 1 046
Re,

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

Il fallait juste mettre :

Code :
LeTexte = MesOption[key].text;
au lieu de

Code :
LeTexte = MesOption[key];
Une fois de plus, un problème s'est résolu en 5 minutes sur le chat, vive anochat

beegees
__________________
beegees est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2011, 21h20   #4
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 421
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 421
Points : 2 809
Points : 2 809
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 :
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 :
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
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h35.


 
 
 
 
Partenaires

Hébergement Web