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

DataTables返回982条空白行及‘Requested unknown parameter 'Key' for row 0, column 0’错误排查求助

问题分析与解决方案

我一眼就揪出了核心问题,咱们一步步梳理解决:

1. 致命错误:dataSrc指向了不存在的字段

你控制台里的AJAX返回数据结构是{ "data": [ {...}, {...}, ... ] },但你的DataTables配置里,dataSrc函数返回的是data.d——可你的返回数据里根本没有d这个字段啊!这直接导致DataTables拿不到有效数据数组,自然找不到Key参数,进而渲染出大量空白行(大概率是后端返回的总记录数是982,但实际数据为空,所以用空行填充)。

修正方法:把dataSrc改成返回data.data:

dataSrc: function (data) {
  console.log(data.data); // 现在能正确打印出数据数组了
  return data.data;
}

2. 配置项位置错误:success和error要放在ajax内部

你当前把success和error放在了DataTables的顶层配置里,但这两个回调是ajax配置的子项,放在顶层完全不会生效。需要把它们移到ajax对象中:

ajax: {
  url: pageUrl,
  type: 'POST',
  contentType: 'application/json; charset=utf-8',
  dataType: "json",
  dataSrc: function (data) {
    console.log(data.data);
    return data.data;
  },
  success: fnsuccesscallback, // 移到此处
  error: fnerrorcallback      // 移到此处
},

3. 可选优化:columnDefs宽度匹配问题

你的columns定义了8列,但columnDefs里只设置了前6列的宽度(targets 0-5),如果需要布局更合理,建议补上剩余列的宽度设置:

"columnDefs": [
  { "width": "10%", "targets": 0 }, // Key列不需要50%宽度,调整后更合理
  { "width": "35%", "targets": 1 }, // Summary列内容多,占比大更合适
  { "width": "10%", "targets": 2 },
  { "width": "10%", "targets": 3 },
  { "width": "10%", "targets": 4 },
  { "width": "10%", "targets": 5 },
  { "width": "7.5%", "targets": 6 },
  { "width": "7.5%", "targets": 7 }
],

修正后的完整配置

var table = $('#example').DataTable({
  ajax: {
    url: pageUrl,
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    dataType: "json",
    dataSrc: function (data) {
      console.log(data.data);
      return data.data;
    },
    success: fnsuccesscallback,
    error: fnerrorcallback
  },
  "pageLength": 50,
  fixedHeader: true,
  responsive: true,
  "columns": [
    { "data": "Key" },
    { "data": "Summary" },
    { "data": "Created" },
    { "data": "Updated" },
    { "data": "Status" },
    { "data": "Priority" },
    { "data": "reporter" },
    { "data": "Assignee" }
  ],
  autoWidth: false,
  "columnDefs": [
    { "width": "10%", "targets": 0 },
    { "width": "35%", "targets": 1 },
    { "width": "10%", "targets": 2 },
    { "width": "10%", "targets": 3 },
    { "width": "10%", "targets": 4 },
    { "width": "10%", "targets": 5 },
    { "width": "7.5%", "targets": 6 },
    { "width": "7.5%", "targets": 7 }
  ],
  "order": [[1, 'asc']]
});
function fnsuccesscallback(data) {
  alert(data.data); // 这里同步改成data.data,匹配返回结构
}
function fnerrorcallback(result) {
  alert(result.statusText);
}

按这个配置修改后,应该就能正常渲染数据,不会再出现空白行和参数错误提示了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 18:37:30