在jQuery中,我在JSON结果中返回HTML,我有什么必须逃避?

时间:2009-03-17 04:06:56

标签: jquery json

在我的Ajax请求中(使用jQuery),我将返回JSON个回复。

所以json.Html会有一个我希望在div中附加的HTML字符串。

在服务器端,我是否必须转义HTML?

在我的MVC行动中,我回来了:

return Content("{html: ???????}, "application/json");

6 个答案:

答案 0 :(得分:14)

另一种解决方案是简单地返回HTML并使用jQuery的load()

$('#someDiv').load('servershtml.html');

按照你的方式去做,你只需要转义双引号和反斜杠。

specification非常易读且简短。

答案 1 :(得分:7)

当转义要放入JSON字符串的内容时,您只需要在引号和斜杠(ala \“和\\)中添加斜杠.HTML字符在JSON字符串中没有任何意义,所以它们很好:)

当然,请确保您的字符串本身格式正确(X)HTML,以便在插入div时不会爆炸。

答案 2 :(得分:6)

使用HTML创建JSON时,您必须转义然后双引号也是CLRF字符,它将返回HTML。

我使用从AJAX请求调用的oracle过程中的pl / sql。如果您愿意,我可以发布实施。

您应该在http://www.jsonlint.com/测试输出,看看它是否有效。

所以

{
    "id": "1",
    "html_value": "<a href=\"http://www.google.com\">test link returnin html code</a>"
}

不同
{
    "id": "1",
    "html_value": "<a href=\"http://www.google.com\">test link returnin
 html code</a>"
}

因为CLRF字符。您应该使用&nbsp替换服务器端的那个;或<br/>

希望这有帮助, 亚历

答案 3 :(得分:5)

我将发布我的PHP经验。我希望它有所帮助。

通常,使用json_encode()函数对数据进行编码,例如:

json_encode(array('data1' => 'String data with text',
              'data2' => '<a href="www.stackoverflow.com">The Site</a>'));

由于json_encode()仅适用于UTF-8字符串,我建议通过函数utf8_encode()对UTF-8中的每个字符串进行编码,即

json_encode(array(utf8_encode('data1') => utf8_encode('String data with text'),
              utf8_encode('data2') => utf8_encode('<a href="www.stackoverflow.com">The Site</a>')));

此外,如果您使用特殊字符(如意大利语单词中的èà),我建议解码返回的json UTF8编码HTML。如果您需要在HTML页面中使用它(例如,作为AJAX调用的结果),这将特别有用。要通过 Javascript 进行解码,请使用:

decodeURIComponent(escape(html));

其中html是返回的编码HTML代码。

问候。

答案 4 :(得分:1)

如果您将dataType configuration option设置为'json',则传递给complete事件的对象将是该javascript对象。基本上,jQuery将把响应内容(假设格式正确的JSON)转换为javascript对象。实施例...

$.ajax({
    dataType: 'json',
    complete: function(myJsonObject) {
        alert(myJsonObject.someMember);
    }
}); //$.ajax({

如果您想知道如何从.net生成格式正确的JSON,那么我建议您探索Json.NET,因为这样可以非常轻松地生成JSON。

答案 5 :(得分:1)

如果你正在使用PHP,json_encode可以帮到你:

$htmlSnippet = '<a href="#"></foo>';
return json_encode(array("html" => $htmlSnippet));

在jQuery中,你要么声明dataType'json'(参见上面的答案),要么按jQuery.parseJSON解码