我必须形成一个JSON字符串,其中一个值具有换行符。必须对此进行转义,然后使用AJAX调用发布。任何人都可以提出一种使用JavaScript对字符串进行转义的方法。我没有使用jQuery。
使用您的JSON及其它.stringify()。然后使用.replace()方法和替换所有出现的\n用\\n。
.stringify()
.replace()
\n
\\n
编辑:
据我所知,还没有知名的JS库可用于转义字符串中的所有特殊字符。但是,您可以链接.replace()方法并替换所有特殊字符,如下所示:
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.
但这很讨厌,不是吗?输入功能之美,它们使您可以将代码分解成多个部分,并使脚本的主要流程保持整洁,并且没有8个链接.replace()调用。因此,让我们将该功能放入称为的函数中escapeSpecialChars()。让我们继续前进,并将其连接到prototype chain该的String对象,所以我们可以调用escapeSpecialChars()直接对String对象。
escapeSpecialChars()
prototype chain
String
像这样:
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"); };
一旦定义了该函数,我们的代码主体就是这样简单:
var myJSONString = JSON.stringify(myJSON); var myEscapedJSONString = myJSONString.escapeSpecialChars(); // myEscapedJSONString is now ready to be POST'ed to the server