【问题标题】:jQuery parseHTML() is not workingjQuery parseHTML() 不工作
【发布时间】:2014-02-25 07:20:27
【问题描述】:

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

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

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

描述内容不存储为转义的 HTML,只是在纯 HTML 中。

提前致谢

## 编辑##

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

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

:: 解码:

"<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),它会正确显示。

图片显示发生了什么:

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

【问题讨论】:

  • 你试过没有$.parseHTML看看它是否有效?
  • HTML 呈现为 scaped:name 呈现为 b>name </b ,我尝试不使用 $.parseHTML(),但结果相同。跨度>
  • 当我尝试使用 WebUtility 你提到它不起作用时,会引发错误。
  • 抱歉,我看到了&lt;%= %&gt; 标签并认为它是.Net
  • '' 不是 HTML,它是 EJS。在解析之前,您需要使用 EJS 模板对其进行 render()。

标签: jquery html node.js ejs


【解决方案1】:

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

作为 hack,您可以执行以下操作,但我不建议这样做,这充其量是一种解决方法:

Encode or Decode HTML entities with jQuery

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

jsFiddle demo

【讨论】:

  • 谢谢,jam mykam,它对我有用。我不知道为什么必须将文本解码为 div 所以得到它并把它放在描述 div 之后,但是工作!
【解决方案2】:

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

所以试试这个:

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

【讨论】:

  • 谢谢,但这不适合我的问题。我已经更新了主题。
【解决方案3】:

尝试如下。

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

【讨论】:

    猜你喜欢
    • 2013-04-23
    • 2017-03-11
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    • 2013-04-17
    • 2012-08-22
    • 2017-06-19
    相关资源
    最近更新 更多