Comment puis-je mettre des guillemets à l'intérieur d'une chaîne à l'intérieur d'un ajax réponse JSON en php?

- Je recevoir une réponse JSON dans une requête Ajax à partir du serveur. De cette manière, il fonctionne:

{ "a" : "1", "b" : "bonjour kitty"" }

Mais je n'ai pas réussi à mettre des guillemets autour de kitty.

Quand je convertir "à \x22 dans l'Ajax de réponse, il est toujours interprété comme" en JavaScript et je ne peut pas analyser le JSON.

Dois-je aussi échapper à l' \ et ne pas encoder plus tard (ce qui serait possible)?

Comment faire?

Edit: je ne suis pas sûr si je l'exprime bien: je veux cette chaîne à l'intérieur de "b" après l'analyse:

hello kitty"

Si nécessaire, je pourrais ajouter une étape supplémentaire après le parser pour le convertir en "b", mais je suppose qu'il n'est pas nécessaire, il y a un moyen plus élégant si cela se fait automatiquement?

Edit2: La page ajax est généré par php. J'ai essayé plusieurs choses à créer de la valeur de b, tous les résultats en JSON parse error sur la page:

  $b = 'hello "kitty"';      

  //no 1:
  //$b = str_replace('"',"\x22",$b);

  //or no 2:
  //$b = addslashes($b);  

  //or no 3: 
  $b = str_replace('"','\"',$b);

  echo '{ "a" : "1", "b" : "' . $b . '"}';

Edit3: Cette solution fonctionne enfin:

$b = 'hello "kitty"';      
$b = str_replace('"','\\"',$b); 
echo '{ "a" : "1", "b" : "' . $b . '"}';
  • \" est OK et \u0022 est OK, mais \x22, si elle est valide dans un JavaScript littéral de chaîne, n'est pas autorisé en JSON.
InformationsquelleAutor user89021 | 2010-04-28