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

时间:2015-06-11 14:21:05

标签: ajax django datatables

我是使用DataTables的新手,我一直很好地工作,直到我想切换到服务器端处理。

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

所以我收到错误:

  

DataTables警告:table 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>

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

2 个答案:

答案 0 :(得分:3)

您在数据中使用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" }
    ]
});

答案 1 :(得分:2)

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

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

这将按照在列中声明的顺序生成<td>&#39的行。如果您有其他布局,和/或另外<td>不应该从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是列索引。