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

Tou*_*afi 6 jquery json datatables yii2

我正在使用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
   });
});
Run Code Online (Sandbox Code Playgroud)

Gyr*_*com 8

原因

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

设置参数draw,recordsTotalrecordsFiltered作为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;
}
Run Code Online (Sandbox Code Playgroud)

DEMO

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