从JSON格式的AJAX响应中获取HTML的正确方法是什么?

时间:2010-01-18 02:03:08

标签: ajax json html-encode

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

当然,HTML代码正在使JSON数组中断 - 我该怎么做才能逃避它(或者有更好的方法来实现这个目标吗?)。我得到一个带有JSON数组的AJAX响应,如下所示:

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

谢谢!

2 个答案:

答案 0 :(得分:1)

与您在JavaScript中习惯使用的相反,'无法在JSON中开始字符串。当你将JSON传递给JavaScript时,它是严格的“。单引号工作 ..当你想要放置XHTML换行符时,很像<br> 工作

因此,请使用“打开HTML字符串,并使用\”清理报价。

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

答案 1 :(得分: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,'\\"')
}));