我正在使用jQuery DataTables和服务器端处理模式.但我面临数据表的问题,我在Datatables文档中搜索了所有内容,但找不到我的答案.
所以问题是我从服务器获得响应,就像这样:
正如您在此JSON响应中所看到的,数据表需要JSON在data.data中以在数据表中设置此数据源有一个属性为Custom Data Property并且它正常工作并显示行.现在问题是数据表没有考虑来自JSON的分页参数,这就是它显示的原因:
请注意,我无法从服务器端更改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
});
});
解决方法
原因
在服务器端处理模式下,DataTables在返回的数据中需要certain structure.参数draw,recordsTotal和recordsFiltered应该是顶级属性.您的响应将这些参数作为数据的子属性,而不是DataTables要查找的位置.
解
将参数draw,recordsTotal和recordsFiltered设置为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;
}
DEMO
有关代码和演示,请参见this jsFiddle.