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

使用jQuery DataTable无法展示C#后端返回JSON数据的问题求助

解决jQuery DataTables展示JSON数据的错误问题

这个错误我之前也碰到过,核心问题出在列配置的写法错误,还有可能存在表格重复初始化的问题,我帮你一步步修正:

错误原因拆解

你看到的Requested unknown parameter '0' for row 0, column 0错误,本质是DataTables找不到你指定的列数据来源:

  • 你在columns里写的{ 'data':data.Prj_Id }是错误的——data是后端返回的数组对象(包含多条项目数据),不是单个项目对象,DataTables会自动遍历数组里的每一条数据,你只需要告诉它要取哪个字段名(字符串形式)即可。
  • 如果之前已经初始化过表格,再次调用dataTable()会导致实例冲突,也可能引发异常。

修正步骤

1. 修正JavaScript的列配置

把columns里的每个data值改成字段名的字符串,比如'Prj_Id',而不是data.Prj_Id。同时推荐使用新版的DataTable()(大写D)API,功能更完善:

function DisplayProjectMasterList() {
    $.ajax({
        url: 'project-master.ashx',
        type: "POST",
        dataType: 'json',
        data: { 'fun': 'DisplayProjectMasterList' },
        success: function (data) {
            console.log(data);
            if (Chk_Res(data.errorMessage) == false) {
                $('#tbl').DataTable({
                    destroy: true, // 关键:销毁旧实例,避免重复初始化报错
                    paging: true,
                    sort: true,
                    searching: true,
                    scrollY: 200,
                    data: data,
                    columns: [
                        { 'data': 'Prj_Id' },
                        { 'data': 'Prj_No' },
                        { 'data': 'Prj_Name' },
                        { 'data': 'Cus_Company_Name' },
                        { 'data': 'Prj_StartDate' },
                        { 'data': 'Prj_CompletionDate' }
                    ]
                });
            }
        }
    });
}

2. 确保HTML表格结构正确

你的表格需要有对应的表头,这样DataTables才能正确匹配列和表头:

<table id="tbl" class="display" style="width:100%">
    <thead>
        <tr>
            <th>项目ID</th>
            <th>项目编号</th>
            <th>项目名称</th>
            <th>客户公司名称</th>
            <th>开始日期</th>
            <th>完成日期</th>
        </tr>
    </thead>
    <tbody></tbody>
</table>

3. (可选)优化C#后端代码

为了让前端处理更稳定,建议后端默认返回空数组(而不是空字符串),并设置正确的响应内容类型:

void DisplayProjectMasterList() {
    // 默认返回空数组,避免无数据时返回空字符串导致前端解析问题
    string JSONString = "[]";
    DataTable Dt = DB.GetDataTable("Sp_GetProjectMasterList");
    if (Dt.Rows.Count > 0) {
        JSONString = JsonConvert.SerializeObject(Dt);
    }
    // 设置正确的JSON响应类型
    Context.Response.ContentType = "application/json";
    Context.Response.Write(JSONString);
}

这样修改后,你的DataTables应该就能正常渲染后端返回的JSON数据了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 04:34:09