jQuery parseHTML()不起作用

时间:2014-02-01 15:06:28

标签: jquery html node.js ejs

我需要将html内容呈现为html,但它呈现为字符串文本。

$('#description').html($.parseHTML('<%=event.description%>'));

jQuery将文本添加为​​字符串,如果blog.description包含以纯文本呈现的段落,粗体,斜体和其他HTML元素,则不会呈现HTML标记。

描述内容不会存储为转义HTML,只是纯HTML格式。

提前致谢

##编辑##

我没有使用.NET Framework,只使用带有Express和EJS模板引擎的Node.JS。

我将描述字段存储在DB中作为两种方法:

::解码:

"<p> example <b>text</b> </p>"

::未解码:

"&lt;p&gt; example &lt;b&gt;text&lt;&#x2F;b&gt; &lt;&#x2F;p&gt;"

不幸的是,两种方式都不能使文本正确地显示为HTML到签名div。

我使用了jQuery,因为第一次直接从DB加载文本的尝试不起作用。

我试过了:

$('#description').html( MY TEXT ).text();

$('#description').text( MY TEXT ).html();

$('#description').html( $.parseHTML(MY TEXT) );

不起作用。但是,如果我获得描述文本并复制并自己渲染(避免使用DB),则会正确显示。

图片显示了正在发生的事情:

enter image description here

任何额外提示都会有所帮助。

3 个答案:

答案 0 :(得分:3)

我仍然认为问题在于您的文本在数据库中以及在返回的某个地方进行HTML编码,并且您需要在屏幕上显示之前进行解码。不幸的是,我不知道node.js和.Net中WebUtility.HtmlDecode()的等效方法是什么。 (希望别人能为你解答这个问题)。

作为一个黑客,您可以执行以下操作,但我不推荐它,它充其量只是一种解决方法:

Encode or Decode HTML entities with jQuery

var mytext = '<%=event.description%>';
var decoded = $('<div />').html(mytext).text();
$('#description').html(decoded);

jsFiddle demo

答案 1 :(得分:0)

请尝试以下操作。

$('#description').html($('<%=event.description%>'));

答案 2 :(得分:0)

如果您尝试将其作为html分配给元素,则无需将其解析为html。它会自动解析,但如果你把它设置为文本并想在那里分配html,你需要解析。

所以试试这个:

$('#description').html('<%=event.description%>');