Prenez votre JSON et .stringify()
il. Ensuite, utilisez le .replace()
et remplacer toutes les occurrences de \n
avec \\n
.
EDIT :
Pour autant que je sache, il n'existe pas de bibliothèque JS connue pour l'échappement de tous les caractères spéciaux dans une chaîne de caractères. Mais, vous pourriez enchaîner les .replace()
et remplacez tous les caractères spéciaux comme ceci :
var myJSONString = JSON.stringify(myJSON);
var myEscapedJSONString = myJSONString.replace(/\\n/g, "\\n")
.replace(/\\'/g, "\\'")
.replace(/\\"/g, '\\"')
.replace(/\\&/g, "\\&")
.replace(/\\r/g, "\\r")
.replace(/\\t/g, "\\t")
.replace(/\\b/g, "\\b")
.replace(/\\f/g, "\\f");
// myEscapedJSONString is now ready to be POST'ed to the server.
Mais c'est plutôt méchant, n'est-ce pas ? C'est là qu'intervient la beauté des fonctions, car elles vous permettent de diviser le code en morceaux et de garder le flux principal de votre script propre, et sans 8 enchaînés. .replace()
appels. Mettons donc cette fonctionnalité dans une fonction appelée , escapeSpecialChars()
. Allons-y et attachons le à la prototype chain
de la String
de sorte que nous pouvons appeler escapeSpecialChars()
directement sur les objets String.
Comme ça :
String.prototype.escapeSpecialChars = function() {
return this.replace(/\\n/g, "\\n")
.replace(/\\'/g, "\\'")
.replace(/\\"/g, '\\"')
.replace(/\\&/g, "\\&")
.replace(/\\r/g, "\\r")
.replace(/\\t/g, "\\t")
.replace(/\\b/g, "\\b")
.replace(/\\f/g, "\\f");
};
Une fois que nous avons défini cette fonction, le corps principal de notre code est aussi simple que ceci :
var myJSONString = JSON.stringify(myJSON);
var myEscapedJSONString = myJSONString.escapeSpecialChars();
// myEscapedJSONString is now ready to be POST'ed to the server
3 votes
J'ai essayé d'échapper le caractère de la nouvelle ligne \n a \\n. Il fonctionne bien. Mais je cherche une bibliothèque JS qui peut faire cela pour tous les caractères d'échappement.
1 votes
Pourquoi devez-vous échapper les nouvelles lignes dans le JSON ? Comment ces valeurs sont-elles décodées lorsqu'elles sont utilisées, car la solution appropriée est d'utiliser la fonction d'encodage correspondante.
0 votes
J'ai passé 6 heures à essayer toutes sortes de choses avec des tonnes de variations pour découvrir qu'un petit slash supplémentaire faisait tout fonctionner comme par magie les choses que je pensais être difficiles prenaient 5 minutes... la chose que je pensais être donnée est devenue impossible... omg
1 votes
Lorsque vous utilisez les appels Ajax avec la sauvegarde php-db côté serveur, utilisez simplement la fonction php addslashes() pour les convertir. Avec cette solution, vous n'avez qu'un seul endroit à convertir et c'est plus propre que les lignes javascript-replace.
1 votes
Voir la réponse et la solution pertinentes à l'adresse suivante http://stackoverflow.com/questions/30366324/unescape-special-characters-in-ajax-response-data