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

.NET Core 6 Razor Pages中DataTable无法显示AJAX获取的数据

解决DataTable加载AJAX数据仅显示表头的问题

1. 匹配后端返回格式与DataTable要求

DataTable默认要求返回的JSON包含data字段(结构如{ "data": [ {...}, {...} ] }),如果后端直接返回纯数组,必须在AJAX配置里指定dataSrc: '',告诉DataTable直接使用返回的数组:

$('#yourTable').DataTable({
  ajax: {
    url: '/YourPage?handler=CollectData',
    type: 'POST',
    headers: {
      'RequestVerificationToken': $('input[name="__RequestVerificationToken"]').val()
    },
    dataSrc: '' // 后端返回纯数组时必须添加
  },
  columns: [
    { data: 'Field1', title: '列1' },
    { data: 'Field2', title: '列2' }
    // 字段名要和后端返回的对象属性完全一致
  ]
});

2. 用正确方式更新数据,避免重复初始化

点击按钮更新数据时,不要重新初始化DataTable,而是复用已有的实例,通过clear()+rows.add()更新:

// 提前保存DataTable实例
let dtInstance = $('#yourTable').DataTable();

// 按钮点击事件
$('#btnLoadData').click(function() {
  $.ajax({
    url: '/YourPage?handler=CollectData',
    type: 'POST',
    headers: {
      'RequestVerificationToken': $('input[name="__RequestVerificationToken"]').val()
    },
    success: function(response) {
      dtInstance.clear().rows.add(response).draw();
    }
  });
});

3. 确保列配置与返回数据完全匹配

  • 检查columns里的data属性和后端返回的字段名大小写完全一致
  • 列的数量必须和返回数据的字段数量对应,否则会触发列数错误
  • 如果后端返回匿名对象,确认字段名没有拼写错误

4. 验证防伪造令牌配置

Razor Pages的POST请求必须携带防伪造令牌,确保页面里包含@Html.AntiForgeryToken(),并在AJAX请求的headers里正确携带。

5. 确认DataTable初始化时机

必须在DOM加载完成后初始化DataTable,比如放在$(document).ready()回调里:

$(document).ready(function() {
  dtInstance = $('#yourTable').DataTable({
    serverSide: false, // 非服务器端模式下无需开启
    columns: [/* 列配置 */]
  });
});

内容的提问来源于stack exchange,提问作者N. Tanaka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 21:17:36