【问题标题】:Datatables server side processing pagination issue数据表服务器端处理分页问题
【发布时间】:2015-12-22 01:03:16
【问题描述】:

我正在尝试使数据表与我的 rest API 配合得很好。让我直接声明:“不会更改 REST api!

当使用服务器端处理时,数据表想要发送特定的查询参数并期望返回特定的格式。对我来说,这就是公牛。没有人想修改他们的后端以匹配第三方库的约定(虽然,我想,提供默认值很好)。

我的桌子是这样设置的:

{
    "processing": true,
    "serverSide": true,
    "ajax": {
      "url": "/api/customers/",
      "dataSrc": "results",
      "data": function (data, settings) {
        // Modify query parameters to match my API
        data.page = ...
        data.page_size = ...
        return data
      }
    },
    ...
}

如您所知,我使用ajax.data 属性来管理表从 API 请求的内容。这很棒。奇迹般有效。当响应返回时,它看起来像这样

{
    "count": 85,
    "next": "http://myurl.com/?page=2",
    "previous": null,
    "results": [
        ...  // The actual data
    ]
}

从我的配置中,您可以看出我使用ajax.dataSrc 让表格获取results 属性,但我找不到任何有关如何从我的回复中获取分页信息的文档。我已经尝试将我的配置修改为

{
    ...
    "ajax": {
      "url": "/api/customers/",
      "dataSrc": function(data) {
          return {
              recordsTotal: data.count,
              recordsFiltered: ...,
              data: data.results,
              ...
          }
      },
      ...
    },
    ...
}

但这只是抛出了一个错误。似乎不可能……那么,我该怎么办?

【问题讨论】:

    标签: jquery ajax datatable pagination


    【解决方案1】:

    你是对的 - 使用 ajax.dataSrc 选项是不可能的。它告诉 DataTables 从哪里获取行的数据(在您的示例中为 data.results),但无法使用 ajax.dataSrc 告诉它从哪里获取 recordsTotal 等。

    为此,您需要将ajax 选项用作函数- 进行Ajax 调用并返回一个对象。基本上与您已经在做的类似,但您也调用$.ajax

    【讨论】:

    猜你喜欢
    • 2012-02-16
    • 2020-12-22
    • 1970-01-01
    • 2018-06-19
    • 2014-10-06
    • 2016-01-05
    • 2018-01-25
    相关资源
    最近更新 更多