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

Laravel8返回对象数组JSON,DataTables报未知参数'0'错误求助

问题描述

Laravel 8控制器中获取数据的代码:

$projects_data = Project::with('group')->get(['id','group_id'])->toArray();
return response()->json($projects_data);

返回的是包含对象的JSON数组,前端DataTables报错:

"DataTables warning: table id=records-table - Requested unknown parameter '0' for row 0, column 0."

HTML代码:

<table class="table table-bordered data-table" id="records-table">
    <thead>
        <tr>
            <th>Id</th>
            <th>group_id</th>
        </tr>
    </thead>
    <tbody>
    </tbody>
</table>

JS代码:

$(document).ready(function() {
    $('#records-table').DataTable({
        processing: true,
        ajax: {
               url : 'projects/data',
               dataSrc: "",
               dataType: "json",
               columns:[
                   {data: 'id', name: 'id'},
                   {data: 'group_id', name: 'group_id'},
               ],
           },
    });
});

怀疑DataTables期望数组组成的JSON数组,而非对象数组,尝试移除processing、删除dataSrc后仍报错,寻求解决方法。

解决方案

问题出在DataTables的配置结构错误——columns选项不应该嵌套在ajax对象内部,而是要和ajax同级放置。

修正后的JS代码:

$(document).ready(function() {
    $('#records-table').DataTable({
        processing: true,
        ajax: {
            url: 'projects/data',
            dataSrc: "",
            dataType: "json"
        },
        columns: [
            {data: 'id', name: 'id'},
            {data: 'group_id', name: 'group_id'}
        ]
    });
});

补充说明:

  • Laravel返回的对象数组完全符合DataTables的要求,不需要改成数组形式,你之前的怀疑方向有误。
  • dataSrc: ""的配置是正确的,因为你的接口直接返回数据数组,不需要解析嵌套的属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:35:22