J'ai regardé autour de moi, et j'essaie de trouver une solution élégante à cela, et je ne suis pas encore en trouver un. J'ai un service Web ASMX dans .NET que j'essaie d'appeler qui nécessite des paramètres.Soumission avec des guillemets simples en utilisant jQuery, Ajax et JSON
J'utilise jQuery sur le côté client pour appeler le service et mon code jQuery ressemble à quelque chose comme ceci:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: "/Reviews/HotelReview.asmx/SubmitReview",
data: "{'name': '" + name + "', " +
"'info': '" info + "'}",
processData: true,
beforeSend: function() { startSubmit(); },
complete: function() { submitComplete(); },
error: function(xhr) { submitError(xhr); },
success: function(msg) { submitSuccess(msg.d); }
});
Il fonctionne très bien, sauf lorsque l'nom ou informations contiennent le ' caractère, une seule citation. Assez simple, car mon JSON définit la fin de la valeur du champ et est une simple citation. Lorsque l'un de ces champs contient un seul guillemet, tout ce que j'obtiens est une "erreur interne du serveur", mais une inspection plus approfondie en utilisant Fiddler m'a montré les résultats (je ne prendrai pas la peine de les poster) indiquant le problème de guillemets simples.
J'ai mis quelque chose en place temporairement pour supprimer les guillemets simples côté client et les remettre du côté serveur, mais cela est loin d'être élégant. Existe-t-il un moyen plus élégant d'échapper à ces guillemets simples afin que mon code puisse fonctionner?
réponse Grand, merci. J'ai utilisé json.js et JSON.encode (myobject) au lieu de construire une chaîne – Odd
Sur les navigateurs qui le supportent (tous les navigateurs de la version actuelle), vous devriez probablement préférer l'objet JSON natif (http://blogs.msdn.com/ c'est-à-dire/archive/2008/09/10/native-json-in-ie8.aspx) si json.js ne le fait pas automatiquement pour vous. – EricLaw