我正在尝试使用DataTables Server Side Processing
目前,即使显示器设置为10,25等,我也会获得1000行(作为显示)
jQuery的:
$(document).ready(function() {
$('#paginatedTableSS').dataTable( {
"processing": true,
"serverSide": true,
"ajax": "script.php"
} );
} );
的script.php:
$i = 0;
$test = array();
$test['draw'] = 1;
$test['recordsTotal'] = 200000;
$test['recordsFiltered'] = 8;
$test['data'] = array();
while($i<=20){
array_push($test['data'], ['test1 ' . $i, 'test2 ' . $i, 'test3 ' . $i, 'test4 ' . $i]);
$i=$i+1;
}
echo json_encode($test);
我的最终目标是将start
传递给脚本,以便脚本可以使用它来提供正确的数据。但是目前我需要在前进之前解决上述问题。但我不确定它有什么问题或如何调试它。
答案 0 :(得分:1)
aaData
似乎表明您正在使用旧版数据表。如果是这种情况,您就会错过iTotalRecords
,iTotalDisplayRecords
和sEcho
。
$test['iTotalRecords'] = count($test['aaData']);
$test['iTotalDisplayRecords'] = count($test['aaData']);
$test['Echo'] = $_REQUEST['sEcho'];
请参阅http://legacy.datatables.net/usage/server-side
如果您不使用旧版数据表,则需要使用data
,records
和recordsFiltered
代替(在链接中引用)
修改强>
您的表显示1000行的原因是因为这是您要返回的行数。使用length
和start
参数确定要返回的行,即
$start = (isset($_REQUEST['start']) && is_numeric($_REQUEST['start']))
? $_REQUEST['start'] : 0;
$length = (isset($_REQUEST['length']) && is_numeric($_REQUEST['length']))
? $_REQUEST['length'] : 100;
$test = array('data'=>array(), 'recordsTotal', 'draw', 'recordsFiltered');
for($i=$start; $i<=$length; $i++) {
array_push($test['data'], array('id'=>$i,'date'=>$i,'status'=>$i,'options'=>$i));
}
$test['recordsTotal'] = 200000;
$test['draw'] = 1;
$test['recordsFiltered'] = count($test['data']);
echo json_encode($test);