我正在努力使数据表与我的其他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,
...
}
},
...
},
...
}
但那只是犯了一个错误。似乎不可能......那么,我该怎么办?
答案 0 :(得分:1)
你是对的 - 使用ajax.dataSrc
选项是不可能的。它告诉DataTables在哪里获取行的数据(在您的示例中为data.results
),但是无法使用ajax.dataSrc
告诉它在哪里获取recordsTotal
等。
为此你需要使用ajax
选项作为函数 - 进行Ajax调用并返回一个对象。基本上与您已经在做的相似,但您也可以调用$.ajax
。