Datatable标准Ajax加载提示No data available in table问题求助
问题原因
- 核心错误是Datatable的columns配置参数名写错:
columns数组内指定对象字段映射的配置项是data,而非aaData,aaData仅用于声明整体数据源的属性,不能用于列字段映射。 - 次要问题:第二种Ajax实现没有指定响应数据格式为JSON,可能导致拿到的是字符串类型的响应,无法正确读取
aaData属性。 - 额外排查点:需要确认你的
<table>结构中<thead>已经提前定义了和columns数量对应的5个<th>元素,列数不匹配也会触发无数据提示。
修正后的代码
$(document).ready(function(){ $.ajax({ type: 'GET', url:'table_backend2.php', dataType: 'json' // 明确指定响应格式为JSON }).done(function(data) { var aaData=data['aaData']; $("#showTable").DataTable({ "aaData": aaData, "columns": [ { data: "id"}, // 将原配置的aaData改为data即可 { data: "show_activity_id" }, { data: "nasa_id" }, { data: "game_show_id" }, { data: "account_id"} ] }); }); });
可选优化方案
你可以直接使用Datatable内置的ajax配置,无需手动封装Ajax请求,代码更简洁:
$(document).ready(function(){ $("#showTable").DataTable({ processing: true, ajax: { url: 'table_backend2.php', type: 'GET', dataSrc: 'aaData' // 指定从响应的aaData字段读取数据 }, columns: [ { data: "id"}, { data: "show_activity_id" }, { data: "nasa_id" }, { data: "game_show_id" }, { data: "account_id"} ] }); });
内容的提问来源于stack exchange,提问作者migrent
相关产品推荐
相关产品推荐

