我正在使用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
});
});
答案 0 :(得分:6)
在服务器端处理模式下,DataTables在返回的数据中需要certain structure。参数draw
,recordsTotal
和recordsFiltered
应该是顶级属性。您的响应将这些参数作为data
的子属性,而不是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;
}
请参阅this jsFiddle以获取代码和演示。