【发布时间】:2021-03-12 14:45:40
【问题描述】:
好的,所以我有一个结构如下的 jquery 数据表
$(document).ready(function () {
var table = $('#tableContent').DataTable({
"processing": true,
"serverSide": true,
"filter": true,
"ajax": {
"url": "path/to/api",
"type": "POST",
"datatype": "json"
},
"columnDefs": [{
"searchable": false,
"orderable": false,
"targets": 0
}],
"columns": [
null,
{ "data": "data1", "name": "data1", "autoWidth": true },
{ "data": "data2", "name": "data2", "autoWidth": true },
{ "data": "data3", "name": "data3", "autoWidth": true },
{ "data": "data4", "name": "data4", "autoWidth": true },
{ "data": "data5", "name": "data5", "autoWidth": true },
{ "data": "data6", "name": "data6", "autoWidth": true },
{ "data": "data7", "name": "data7", "autoWidth": true }
],
"order": [[1, 'asc']]
});
table.on('order.dt search.dt page.dt', function () {
table.column(0, { search: 'applied', order: 'applied' }).nodes().each(function (cell, i) {
cell.innerHTML = i + 1;
});
}).draw();
});
<table class="tableWrapper" id="tableContent">
<thead>
<tr>
<th>#</th>
<th>data1</th>
<th>data2</th>
<th>data3</th>
<th>data4</th>
<th>data5</th>
<th>data6</th>
<th>data7</th>
</tr>
</thead>
<tbody>
</tbody>
<tfoot>
</tfoot>
</table>
这是对被调用 Api 的 JSON 响应
{
"draw":"1",
"recordsFiltered":48,
"recordsTotal":48,
"data":[
{
"data1":"XXXX",
"data2":"XXXX",
"data3":"XXXX",
"data4":"XXXX",
"data5":"XXXX",
"data6":"XXXX",
"data7":"XXXX"
}...
]
}
它会抛出这个错误:
“DataTables 警告:table id=tableContent - 请求第 0 行第 0 列的未知参数“0”。有关此错误的更多信息,请参阅http://datatables.net/tn/4"(Attached error message picture)
但是!抛出错误后不久,数据加载没有问题。
将null 替换为{data:null} 似乎可以消除错误,但它会与我的索引列混淆。本来应该是 1,2,3,4... 的序列现在只是一堆 [object Object]
see image
【问题讨论】:
-
您问题中的代码存在语法错误 - 看起来像是不完整的复制/粘贴问题。你能edit 修复吗?另外,您能否提供原始 JSON 文本响应的示例?
-
@andrewjames 我修复了它,还提供了示例 JSON 响应
-
如您所见,在您的 cmets 将
null替换为{data:null}时,您的 HTML 表指定了 8 列。您的 ajax 响应仅提供其中 7 个的数据。<th>#</th>列没有数据 - 这对 DataTables 无效。您打算如何填充该索引列?数据(1、2、3...)从哪里来? -
@andrewjames,索引列由
table.on('order.dt search.dt page.dt')填充。我想我可以只传入一个空值,然后在触发 dataTables 的事件后替换它。 -
@andrewjames,但是感谢您的帮助!我应该只在服务器端而不是客户端处理索引
标签: javascript html jquery datatables frontend