在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字符。 您应该在服务器端替换为&nbsp ; 或

希望这会有所帮助,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解码