自定义数据源属性dataSrc和分页问题

我正在使用jQuery DataTables和服务器端处理模式。 但我面临数据表的问题,我在Datatables文档中搜索了所有内容,但找不到我的答案。

所以问题是我从服务器获得响应,就像这样:

JSON响应

正如您在此JSON响应中所看到的,数据表需要JSON在data.data以在数据表中设置此数据源有一个属性是Custom Data Property并且它工作正常并显示行。 现在问题是数据表没有考虑来自JSON的分页参数,这就是它显示的原因:

分页

请注意,我无法从服务器端更改JSON响应。

更新:这是js调用脚本:

 $(document).ready(function () { $("#example").dataTable({ "ajax": { url: app.getApiUrlWithAccessToken('lead/get_all'), dataSrc: function(json){ return json.data.data; } }, "lengthMenu": [1,2,5,10,15], "columns": [ { "data": "first_name" }, { "data": "last_name" }, { "data": "title" }, { "data": "email" }, { "data": "city" }, { "data": "status" } ], "processing": true, "serverSide": true }); }); 

原因

在服务器端处理模式下,DataTables期望返回数据中的某些结构 。 参数drawrecordsTotalrecordsFiltered应该是顶级属性。 您的响应将这些参数作为data子属性,而不是DataTables要查找的位置。

将参数drawrecordsTotalrecordsFiltered为DataTables期望的JSON响应的顶级属性。

ajax.dataSrc选项使用以下代码:

 dataSrc: function(json){ json.draw = json.data.draw; json.recordsTotal = json.data.recordsTotal; json.recordsFiltered = json.data.recordsFiltered; return json.data.data; } 

DEMO

有关代码和演示,请参阅此jsFiddle 。