数据表服务器端处理分页问题
我正在尝试使用我的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
。