202 votes

jQuery : citation unique dans la réponse JSON

J'envoie des requêtes à mon serveur en utilisant jQuery.post() et mon serveur renvoie des objets JSON (du type { "var": "value", ... } . Cependant, si l'une des valeurs contient un guillemet simple (correctement échappé comme \' ), jQuery ne parvient pas à analyser une chaîne JSON autrement valide. Voici un exemple de ce que je veux dire (réalisé dans la console de Chrome) :

Chrome Console

Est-ce normal ? N'y a-t-il aucun moyen de transmettre correctement une citation unique via JSON ?

1voto

BoCyrill Points 1057

J'essayais d'enregistrer un objet JSON à partir d'une requête XHR dans un attribut HTML5 data-*. J'ai essayé plusieurs des solutions ci-dessus sans succès.

Ce que j'ai fini par faire, c'est remplacer le guillemet simple ' avec le code it ' en utilisant une expression rationnelle après l'appel de la méthode stringify() de la manière suivante :

var productToString = JSON.stringify(productObject);
var quoteReplaced = productToString.replace(/'/g, "'");
var anchor = '<a data-product=\'' + quoteReplaced + '\' href=\'#\'>' + productObject.name + '</a>';
// Here you can use the "anchor" variable to update your DOM element.

0voto

Aistina Points 6720

Intéressant. Comment générez-vous votre JSON du côté du serveur ? Utilisez-vous une fonction de bibliothèque (telle que json_encode en PHP), ou construisez-vous la chaîne JSON à la main ?

La seule chose qui attire mon attention est l'apostrophe d'échappement ( \' ). Étant donné que vous utilisez des guillemets doubles, comme vous devriez le faire, il n'est pas nécessaire d'échapper aux guillemets simples. Je ne peux pas vérifier si c'est bien la cause de votre erreur jQuery, car je n'ai pas encore mis à jour la version 1.4.1 moi-même.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X