JSON est un moyen de transport.
peut importe comment il code l'information.
Si tu utilise JSON.stringify JSON.Parse json_encode json_decode ces outils te garantissent que ce que tu encode sera décodé à l'identique.
il pourrait transporter en binaire avec des caractères ésotérique ou avec n'importe quoi d'autre la seul chose qui importe c'est que la structure que tu encode sera celle que tu obtiendra au décodage
que json_encode ajoute ou pas des " des espaces ou quoi que ce soit d'autre n'a aucun importance
si tu met toto dans ta clef tu auras toto dans ta clef et que pour le transport JSON ait ou pas ajouté de " ne change rien. si tu a une map JSON va l'encoder {"clef":"valeur"} et qu'il y ait 1 2 20 ou googol espaces entre { " ne changera rien tu aura à l'arrivé un map identique.
il ne sert absolument à vouloir modifier la façon don JSON encode les objets.
mais surtout il est complètement absurde d'encoder 2 fois un objet pour le décoder 1 fois
1 2
| $data[] = array('text'=>$text,'value'=>"toto");
echo json_encode($data); |
tab = JSON.parse(JSON.stringify(msg));
voici ce que tu fais
1 2
| $data[] = array('text'=>$text,'value'=>"toto");
echo json_encode($data);// premier encodage |
=>
[{"text":"Principale","value":"toto"},{"text":"Seconde","value":"tata"}]
1 2
| JSON.stringify(msg)
//deuxième encodage |
où msg est la string précédente =>
"[{\"text\":\"Principale\",\"value\":\"toto\"},{\"text\":\"Seconde\",\"value\":\"tata\"}]"
ce qui est la représentation JSON de ta chaine de caractères.
puis
tab = JSON.parse(...);//premier decodage
=>
[{"text":"Principale","value":"toto"},{"text":"Seconde","value":"tata"}]
tu obtiens une chaine est non pas la structure de donnée de départ
values: afficheListe(), ////ICI JE VOUDRAIS BIEN LA CHAINE DE MON AJAX
ceci n'a absolument aucun sens ici ce dont tu as besoin c'est la structure de donnée et non la string
1 2
| $data[] = array('text'=>$text,'value'=>"toto");
echo json_encode($data); |
1 2 3 4 5 6 7 8 9 10 11 12
| values: afficheListe(), ////ICI le tableau de données
//=>
[
{
text:"Principale",
value:"toto"
},
{
text:"Seconde",
value:"tata"
}
] |
pour finir je dirais que data: "id=$id", est des plus étrange je ne vois pas ce qu'il fait là. ça sent très mauvais le mélange de js et php.
A+JYT
Partager