Bonjour,
Dans un json je souhaite mettre une fonction qui serait ensuite envoyée et interprétée en javascript par eval, par exemple : {"fct":"maFonction(maVariable, 'monTexte');"}
Jusque là tout va bien, mais quid pour gérer monTexte avec une apostrophe ?
Je précise que le tout est stocké dans un champ mySQL avant d'être relu et transmis.
J'ai essayé plusieurs manières de faire avec addslashes notamment mais rien n'y fait, soit le json n'est plus interprété par PHP en tant que tel (en base j'ai une double quote dans mon texte qui flingue le json), soit c'est au niveau de l'interprétation coté javascript où j'ai un apostrophe dans mon texte qui flingue son interprétation.
Je tourne en bourrique
Help !!!
En Javascript j'utilise eval
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 $monTexte = "Mon test d'ici"; // ou bien $monTexte = "Mon test d\'ici"; avec addslashes par exemple $fctCall .= "maFonction(msg.get('idMsg'),'".$monTexte."');"; $allData = '{"fct":"'.$fctCall.'"}'; // Tout en chargé en base // Ensuite dans une autre fonction, je decode le champ $data = json_decode($ligne->data); if ($data == NULL) $json .= '"actionClient":"" '; else { if ((!isset($data->fct)) || ($data->fct == "")) $json .= '"actionClient":"" '; else { // je construis le json que je retourne $json .= '"actionClient":"' . $data->fct . '" '; } } //J'envoie le tout
- soit actionClient contient : maFonction(msg.get('idMsg'),'Mon test d'ici'); et donc j'ai une erreur javascript [en base dans ce cas j'ai : {"fct":"'maFonction(msg.get('idMsg'),'Mon test d'ici');"} ce qui permet au son de fonctionner]
- soit actionClient est vide car $data est NULL car dans ma base j'ai : {"fct":"'maFonction(msg.get('idMsg'),'Mon test d\'ici');"} ou {"fct":"'maFonction(msg.get('idMsg'),'Mon test d\\\'ici');"} et il semblerait qu'un anti-slashe perturbe le json_decode (pourquoi d'ailleurs ?)
Quelqu'un aurait une petite idée svp ?
Par avance merci
Cdlt
LaZag
Partager