数据表服务器端处理分页问题

我正在尝试使用我的rest API使数据表很好地运行。 让我说明蝙蝠的权利: “REST api不会改变!

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

我这样设置了我的桌子:

{ "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, ... } }, ... }, ... } 

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

你是对的 – 使用ajax.dataSrc选项是不可能的。 它告诉DataTables在哪里获取行的数据(在你的例子中是ajax.dataSrc ),但是没有办法使用ajax.dataSrc告诉它在哪里获取recordsTotal等。

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