在jQuery中,我在JSON结果中返回HTML,我有什么必须逃避?
在我的Ajax请求中(使用jQuery )我返回一个JSON响应。
所以json.Html会有一个我希望在div中追加的HTML字符串。
在服务器端,我是否必须转义HTML?
在我的MVC行动中,我回来了:
return Content("{html: ???????}, "application/json");
另一种解决方案是简单地返回HTML并使用jQuery的load()
:
$('#someDiv').load('servershtml.html');
要按照你的方式去做,你只需要转义双引号和反斜杠。
规范非常易读且简短。
在转义要放入JSON字符串的内容时,您只需要在引号和斜杠(ala \“和\\)中添加斜杠.HTML字符在JSON字符串中没有任何意义,所以它们很好:)
当然,请确保您的字符串本身格式正确(X)HTML,以便在插入div时不会爆炸。
使用HTML创建JSON时,您必须转义双引号字符 ,以及CLRF字符 ,它将返回HTML。
我在一个从AJAX请求调用的oracle过程中使用了pl / sql。 如果您愿意,我可以发布实施。
您应该在http://www.jsonlint.com/上测试您的输出,看它是否有效。
所以
{ "id": "1", "html_value": "test link returnin html code" }
是不同的
{ "id": "1", "html_value": "test link returnin html code" }
因为CLRF字符。 您应该在服务器端替换为 
; 或
。
希望这会有所帮助,Alex
我将发布我的PHP经验。 我希望它能有所帮助。
通常,使用json_encode()
函数对数据进行编码,例如:
json_encode(array('data1' => 'String data with text', 'data2' => 'The Site'));
由于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('The Site')));
此外,如果您使用特殊字符(如意大利语中的è和à ),我建议解码返回的json UTF8编码HTML。 如果您需要在HTML页面中使用它(例如,作为AJAX调用的结果),这将特别有用。 要通过Javascript解码,请使用:
decodeURIComponent(escape(html));
其中html
是返回的编码HTML代码。
问候。
如果将dataType
配置选项设置为'json'
则传递给complete
事件的对象将是该javascript对象。 基本上,jQuery将把响应内容(假设格式正确的JSON)转换为javascript对象。 例…
$.ajax({ dataType: 'json', complete: function(myJsonObject) { alert(myJsonObject.someMember); } }); //$.ajax({
如果您想知道如何从.net生成格式正确的JSON,那么我建议您探索Json.NET,因为它使得生成JSON变得非常非常容易。
如果您正在使用PHP,json_encode会为您提供帮助:
$htmlSnippet = ''; return json_encode(array("html" => $htmlSnippet));
在jQuery中,您可以声明dataType’json’(参见上面的答案)或通过jQuery.parseJSON解码