我使用的是jQuery DataTables 1.10.12版。以下是我的相关代码
// initialize datatable
jQuery('#taskTable').DataTable( {
"bProcessing": true,
"bServerSide": true,
"bInfo": true,
"bPaginate": true,
"bLengthChange":false,
"pageLength": 10,
"sAjaxDataProp":"serverPageDataModelBean.data"
});
正在显示数据并且分页正在运行。但是,当我设置"bInfo": true
时,我收到以下消息:
显示0个条目中的0到0(从NaN总条目中过滤掉)
并且我的“下一步”按钮不起作用。在serverPageDataModelBean中,我发送{"recordsTotal":12,"recordsFiltered":12,"data":[]}
,其中数据不为空。
有人可以告诉我出了什么问题吗?
答案 0 :(得分:4)
您的服务器端响应缺少draw
参数,该参数应与请求中的draw
参数具有相同的值。当发生这种情况时,jQuery DataTables会丢弃数据。
draw
此对象作为响应的绘制计数器 - 来自作为数据请求的一部分发送的
draw
参数。
返回draw
参数,其值与请求中的draw
参数值相同。
有关详细信息,请参阅Server-side processing - Returned data。
答案 1 :(得分:4)
我知道这太晚了,但我发布这个以防万一有人绊倒了。 答案是你需要像这样将服务器端设置为false" serverSide":false。
答案 2 :(得分:2)
在服务器端(例如php)处理时,对空数据的响应将是...
echo json_encode(
array(
'draw' => $_POST['draw'],
'data' => [],
'recordsFiltered' => 0,
'recordsTotal' => 0
)
);
在纯json中
{"draw":1,"data":[],"recordsFiltered":0,"recordsTotal":0}
简而言之,无论什么2020年的数据表在服务器端处理时都需要此参数。
答案 3 :(得分:1)
如果您使用的是serverside:True,则将其删除或写入serverside:false
例如:
$(document).ready(function() {
$('#example1').dataTable( {
"ajax": {
"url": "view_results",
"type": "POST"
},
'order':[]
} );
});