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

jQuery DataTable ajax获取JSON响应时无法填充表格数据问题

问题描述

使用jQuery DataTable组件时,直接配置本地data数据源可正常加载渲染表格,切换为ajax方式请求后端接口后,返回的JSON数据无法填充到表格,相关代码、返回结构、DOM、问题截图如下。

相关代码与资源

DataTable初始化代码

// 本地测试数据(该配置下表格可正常渲染)
// var myObj ={"data": { "id":"John", "created_at":31 }};
// var data = [myObj];
$table = $('#client_search').DataTable({
    responsive: true,
    info: false,
    processing: true,
    // serverSide: true,
    dom: 'Bfrtip',
    buttons: [
        {
            extend: 'colvis',
            text: 'Show/Hide Columns'
        },
        'pageLength',
        'print',
        'excelHtml5'
    ],
    // 本地可用的数据源配置
    // data:data['data'],
    ajax: {
        url: '/admin/reports/client-search',
        type: 'post',
        dataSrc:'data',
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    },
    columns: [
        {data:"id"},
        {data:"created_at"}
    ]
});

服务端返回响应

{"data":{"id":3,"created_at":"2021-07-30T18:30:36.000000Z"}}

表格DOM结构

<table class="table table-striped display responsive nowrap datatable" id="client_search">
    <thead>
        <tr>
            <th scope="col">id</th>
            <th scope="col">created at</th>
        </tr>
    </thead>
</table>

问题截图

问题截图1
问题截图2

问题排查与修复

核心问题是DataTable要求dataSrc指向的数据源必须是对象数组(每一个对象对应表格一行数据),你当前接口返回的data字段是单个对象,不是数组,哪怕只有一行数据也无法被识别渲染。
可按照以下优先级修复:

  • 优先改后端返回结构:将data字段对应的值改为数组格式,哪怕只有一条数据也要用数组包裹,修改后返回格式如下,和你本地测试可用的数据源格式保持一致即可:
{
    "data": [
        {"id":3,"created_at":"2021-07-30T18:30:36.000000Z"}
    ]
}
  • 无法修改后端时可在前端做数据转换:修改ajax配置里的dataSrc为函数,手动把返回的单个对象包装成数组再传给DataTable,配置示例:
ajax: {
    url: '/admin/reports/client-search',
    type: 'post',
    dataSrc: function(res) {
        // 把单条数据包装为数组返回
        return [res.data];
    },
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
}
  • 额外排查项:打开浏览器开发者工具的Network面板,确认接口请求返回200状态码、无CSRF报错、响应头Content-Type为application/json,如果返回纯文本/html格式DataTable会解析JSON失败,也无法填充数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:21:38