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

时间:2015-10-05 05:38:41

标签: jquery json datatables yii2

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

所以问题是我从服务器获得响应,如下所示:

JSON response

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

Pagination

请注意,我无法从服务器端更改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
   });
});

1 个答案:

答案 0 :(得分:6)

原因

在服务器端处理模式下,DataTables在返回的数据中需要certain structure。参数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;
}

样本

请参阅this jsFiddle以获取代码和演示。