在我的Ajax请求中(使用jQuery),我将返回JSON个回复。
所以json.Html会有一个我希望在div中附加的HTML字符串。
在服务器端,我是否必须转义HTML?
在我的MVC行动中,我回来了:
return Content("{html: ???????}, "application/json");
答案 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字符。您应该使用 
替换服务器端的那个;或<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解码