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

使用jQuery DataTable(服务端)渲染HTML元素异常:显示原始代码

解决jQuery DataTables服务端模式下HTML元素显示原始代码的问题

嘿,我来帮你搞定这个困扰!你遇到的问题是因为jQuery DataTables默认会自动转义HTML内容(为了防止XSS攻击),所以当服务端返回带<span>、<a>这类标签的内容时,它会把标签当成纯文本显示,而不是渲染成对应的页面元素。下面给你两种简单的解决方法:

方法一:直接禁用列的HTML转义

针对需要渲染HTML的列,添加"escape": false配置,告诉DataTables不要转义该列的内容:

$('.server_table').DataTable({
  "processing": true,
  "serverSide": true,
  "ajax": "{{ route('getdata') }}",
  "columns": [
    { "data": "league" },
    { 
      "data": "match", // 替换成你实际的字段名
      "escape": false  // 关键配置:禁用HTML转义
    }
  ]
});

方法二:使用render函数自定义渲染(更灵活)

如果需要对返回的数据做额外处理(比如拼接自定义链接、添加样式类),可以用render函数直接返回HTML内容:

$('.server_table').DataTable({
  "processing": true,
  "serverSide": true,
  "ajax": "{{ route('getdata') }}",
  "columns": [
    { "data": "league" },
    { 
      "data": "match",
      "render": function(data, type, row) {
        // 直接返回服务端传来的HTML字符串,DataTables会渲染它
        return data;
        
        // 如果你需要自定义内容,比如给比赛名称加跳转链接,也可以这么写:
        // return `<a href="/matches/${row.id}" class="btn btn-sm btn-primary">${data}</a>`;
      }
    }
  ]
});

注意事项

确保你的服务端返回的是未转义的HTML字符串(比如<a href="xxx">英超联赛</a>),而不是转义后的字符(比如&lt;a href="xxx"&gt;英超联赛&lt;/a&gt;)。如果服务端返回的是转义后的内容,需要先在服务端处理成原始HTML,或者在render函数中做解码处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:27:46