2

我有一个创建“帖子”的 AJAX 请求,并且在成功发布后,我希望将 HTML 注入回 DOM。现在我正在返回一个详细说明成功/错误的 JSON 数组,当我成功时,我还会在响应中包含帖子的 HTML。因此,我将响应解析为 JSON,并将 JSON 数组中的一个键设置为一堆 HTML 代码。

自然地,HTML 代码使 JSON 数组中断——我应该怎么做才能转义它(或者有更好的方法吗?)。我得到一个带有 JSON 数组的 AJAX 响应,如下所示:

[{response:"success"},{html:'<div class="this is going to break...

谢谢!

4

2 回答 2

1

与您在 JavaScript 中可能习惯的相反,' 不能在 JSON 中开始字符串。严格来说,它是一个 "。当您将 JSON 传递给 JavaScript 时,单引号起作用。就像您想要放置 XHTML 换行符时<br> 起作用。

因此,使用 " 打开 HTML 字符串,并使用 \" 清理引号。

json.org有更多信息 WRT 你应该清理什么。尽管特殊字符列表并不长,但最好使用 Anurag 在评论中建议的库。

于 2010-01-18T02:13:59.190 回答
1

除了 BranTheMan 提到的转义双引号外,换行符还会破坏 JSON 字符串。您需要将换行符替换为\n.

就个人而言,我发现这已经足够了:

// Don't know what your serverside language is, example in javascript syntax:

print(encodeJSON({
    response : "success",
    html : htmlString.replace(/\n/g,'\\n').replace(/"/g,'\\"')
}));
于 2010-01-18T03:00:50.800 回答