我必须形成一个 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