带有 ajax 的 DataTables 1.10.6,为第 0 行请求未知参数 0

Posted

技术标签:

【中文标题】带有 ajax 的 DataTables 1.10.6,为第 0 行请求未知参数 0【英文标题】:DataTables 1.10.6 with ajax, requested unknown parameter 0 for row 0 【发布时间】:2015-08-27 07:26:46 【问题描述】:

我是使用 DataTables 的新手,在我想切换到服务器端处理之前,它一直运行良好。

感觉就像我开始接近它的工作,它现在给我一个错误并显示正确数量的行但没有任何数据。

所以我得到了错误:

DataTables 警告:表 id=dataTables-outputTest - 请求第 0 行的未知参数“0”。有关此错误的详细信息,请参阅https://www.datatables.net/manual/tech-notes/4

这是我的 js:

$(document).ready( function () 
    $('#dataTables-outputTest').DataTable(
        "processing": true,
        "serverSide": true,
        "ajax": "/TestData/data-source"
    );
);

这是我试图放入表中的 JSON:


    "data": [
        
            "cycle_p": 628320,
            "designation": "C1",
            "gear": "R660",
            "cycle_k": 204000,
            "reportnr": "NA05006"
        
    ],
    "draw": "1",
    "recordsFiltered": 1,
    "recordsTotal": 1

不知道这是否重要,但我使用的是 Django,输出是来自不同模型的属性的混合。

以下是相关的 html

<div class="dataTable_wrapper">
    <table class="table table-bordered table-hover" id="dataTables-outputTest">
        <thead>
        <tr>
            <th>Report</th>
            <th>Test</th>
            <th>Gear</th>
            <th>Cycle K</th>
            <th>Cycle P</th>
        </tr>
        </thead>
        <tbody>
        </tbody>
    </table>
</div>

非常感谢一些帮助,因为数据库必须能够在不减慢一切速度的情况下大幅增长。

【问题讨论】:

好的,所以我在清理 html 并在此处发布时删除了一些内容。所以我摆脱了那个错误信息。现在我被困在处理上。 【参考方案1】:

你需要指定哪些数据对应哪些列:

$('#dataTables-outputTest').DataTable(
    "processing": true,
    "serverSide": true,
    "ajax": "/TestData/data-source",
    columns : [
        data : "cycle_p" ,
        data : "destination" ,
        data : "gear" ,
        data : "cycle_k" ,
        data : "reportnr" 
    ]
);

这将按照在列中声明的顺序生成带有&lt;td&gt; 的行。如果您有其他布局,和/或另外 &lt;td&gt; 不应该从 JSON 接收数据,您可以使用 columnDefs 代替:

columnDefs : [
    data : "cycle_p", targets : 0 ,
    data : "destination", targets : 8  ,
    data : "gear", targets : 3  ,
    data : "cycle_k", targets : 2  ,
    data : "reportnr", targets : 1  
]

其中 target 是列索引。

【讨论】:

是的,我注意到了,但设法通过重新排序来解决它。但这是一个很好的提示,我将来可能需要它。【参考方案2】:

您在数据中使用Objects,因此您需要使用columns.data 将对象属性与表列匹配。请看下面的例子:

$('#dataTables-outputTest').DataTable(
    "processing": true,
    "serverSide": true,
    "ajax": "/TestData/data-source",
    "columns": [
        "data": "cycle_p" ,
        "data": "designation" ,
        "data": "gear" ,
        "data": "cycle_k" ,
        "data": "reportnr" 
    ]
);

【讨论】:

以上是关于带有 ajax 的 DataTables 1.10.6,为第 0 行请求未知参数 0的主要内容,如果未能解决你的问题,请参考以下文章

模型绑定新的 Datatables 1.10 参数

如何使用 jQuery.dataTables 1.10 向 ASP.NET WebMethod 后端发送和接收 JSON?

1.10 中的 DataTables 无限滚动

确定 DataTables 是不是在 1.10 版中完成。有回调吗?

html 带有Ajax数据的DataTables摘要页脚行

带有 ajax 的 DataTables 1.10.6,为第 0 行请求未知参数 0