我有一个数据表,我的jquery如下,
$('#example').DataTable({
"lengthMenu": [[10,15,20,25,-1], [10,15,20,25,'All']],
"processing": true,
"serverSide": true,
ajax: {
url: 'url2',
dataSrc: 'data'
},
columns: [
{ data: 'column1' },
{ data: 'column2' },
{ data: 'column3' },
{ data: 'column4' },
{ data: 'column5' },
{ data: 'column6' }
]
});
这正常工作。唯一的问题是尽管它显示了分页链接,但它们不可单击,并且所有行都显示在首页本身中。
例如如果有100行,则会生成1-10个链接,但所有100条记录都显示在首页上。
我已经介绍了,
https://datatables.net/examples/data_sources/server_side
我在这里做错了什么?
谢谢您的建议
服务器端代码-
$total_records = $this->model2->getTotal();
$query['results'] = $this->model1->get_Data();
$data = array('data' => $query['results'],
"draw" => (isset($_REQUEST["draw"]) ? $_REQUEST["draw"] : 0),
"recordsTotal" => $total_records,
"recordsFiltered" => $total_records
);
echo json_encode($data);
我想我知道我在做什么错, 当我在php代码中打印$ _GET时,结果为空。但是它应该具有极限值和偏移值。 如何在$ _GET中发送限价抵消?
答案 0 :(得分:0)
您需要知道页面上有多少条记录,以及有多少条记录。
您的SQL将以OFFSET 30 LIMIT 10
结尾(例如)。
首先获得总记录。页面将通过您的URL进入,如果未设置,则默认为页面1。
偏移量的计算方法如下(示例,第3页):
$totalPages = ceil($totalRecords / $numPerPage); // round up the way.
$offset = ($page * $numPerPage) - $numPerPage; // (3 * 10 = 30) - 10 = offset 20
因此,您的SQL将使用OFFSET 20 LIMIT 10
答案 1 :(得分:0)
这是您的server.php的外观。认为您缺少一些代码行:
<?php
$table = 'employees';
$primaryKey = 'id'; // Table's primary key
$columns = array(
array( 'db' => 'id', 'dt' => 0 ),
array( 'db' => 'first_name', 'dt' => 1 ),
array( 'db' => 'last_name', 'dt' => 2 ),
array( 'db' => 'position', 'dt' => 3 ),
array( 'db' => 'date', 'dt' => 4 ),
array( 'db' => 'updated', 'dt' => 5 ),
);
$sql_details = array(
'user' => 'username',
'pass' => 'password',
'db' => 'database',
'host' => 'localhost'
);
require( 'ssp.class.php' );
echo json_encode(
SSP::simple( $_POST, $sql_details, $table, $primaryKey, $columns )
);
?>
最终结果:https://databasetable-net.000webhostapp.com/
这应该为您提供正确的方向。认为可能也需要添加ssp.class.php文件,不确定是否有(可以在github上找到)。希望这可以帮助!