You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataTables获取API返回HTML字符串被转义显示为纯文本如何解决?

DataTables HTML内容无法正常渲染的解决方案

核心原因

DataTables默认开启了HTML内容转义机制,所有直接绑定到列的字符串内容都会被转义为纯文本展示,避免XSS安全风险,这就是你直接看到<p>Hello</p>或转义后字符的原因。
你之前使用的Html.Raw、HttpUtility.HtmlDecode均为服务端方法,在前端初始化DataTables的配置中调用不会生效。

解决方案

方案1:直接关闭对应列的转义(最简单)

如果你的HTML来源是可信的(非用户提交的可控内容),直接在对应列配置escape: false即可:

$('#你的表格ID').DataTable({
  // 其他基础配置(ajax、分页、排序等)
  columns: [
    // 其他列的配置
    {
      data: '返回数据中对应HTML内容的字段名',
      escape: false // 核心配置:关闭该列的HTML转义
    }
  ]
})

方案2:render函数手动解码(适用于API返回已转义HTML的场景)

如果你的API已经提前把HTML转义成了&lt;p&gt;这类格式,可以在render函数中先解码再返回:

$('#你的表格ID').DataTable({
  columns: [
    {
      data: '返回数据中对应HTML内容的字段名',
      render: function (data) {
        // HTML解码方法,兼容所有浏览器
        const decodeHtml = (str) => {
          const temp = document.createElement('textarea');
          temp.innerHTML = str;
          return temp.value;
        }
        return decodeHtml(data);
      }
    }
  ]
})

常见疑问说明

你之前手动渲染a标签生效的原因是:在render函数中直接返回拼接的HTML字符串时,DataTables不会对render的返回值做默认转义,只有直接绑定data字段时才会触发默认转义逻辑。
如果担心XSS风险又要保留段落换行,可以在render函数中过滤掉危险标签,仅保留<p>、<br>、<span>等安全标签后再返回。


内容的提问来源于stack exchange,提问作者brennancodes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:24:03