我正在使用php
此查询select * from table
以及我希望在服务器端处理jquery
datatable
中显示的结果意味着我想使用{{1} } jquery
自己的datatable
方法。我总共有58行。所以默认情况下我应该有6页。每页10行。数据即将到来并显示在表格中。但错误的分页。
实际上它显示了第一页中的所有58行,并且还显示了6个分页按钮。如果我点击任何东西都没有用。搜索和排序不起作用。
我没有粘贴ajax
代码,但是我在这里粘贴了sql
的程序代码。
php
代码:
php
require_once("logic/LogsDataLogic.php");
$ldl = new LogsDataLogic();
$data = $ldl->getDataByFromDateToDate();
$arr = [
"draw" => $_POST["draw"],
"recordsTotal" => count($data),
"recordsFiltered" => count($data),
"data" => $data
];
echo json_encode($arr);
代码:
jquery
$(document).ready(function(){
$('#logs_table').DataTable( {
"processing": true,
"serverSide": true,
ajax: {
url: '../app/getData.php',
type: "POST"
}
} );
});
代码:
html
我附上了最终结果的图片。Table Image here
答案 0 :(得分:1)
Sol 1:
如果您不想从服务器分页,只需设置" serverSide":false, 这将带来你所有的记录,即一次性58,但分页将起作用。
Sol 2:
如果你想从服务器端分页,则每次按照这些步骤只获取10条记录
你已经添加了" serverSide":true,所以当你查看控制台时 以及其他参数传递一些其他参数。 您需要在 limit 20,10
的服务器端查询中处理参考:https://datatables.net/examples/server_side/simple.html
例如:
draw:4
columns[0][data]:0
start:20
length:10
search[value]:
search[regex]:false
<强>解释强>
将serverSide设置为false时
datatable从服务器获取所有记录(在您的情况下为58),并按照建议在UI中进行分页(每页10次) 因此,当您打开页面时,没有激活ajax调用
将serverSide设置为true时
Datable仅获得前10条记录,当您更改页面时,会触发ajax调用以获取另一组10条记录。 Datatable会在请求中添加一些参数,并希望您在服务器端处理这些参数 例如:第一次记录和每组记录总数以及可用记录总数
对于每个请求,启动和传递长度以获取来自哪个索引
的记录响应数据预期 &#34; draw&#34;:2,&#34; recordsTotal&#34;:57,&#34; recordsFiltered&#34;:57以及数据
draw是您可以从请求中使用的唯一键 recordsTotal是no no of record:为此你需要另外一个查询来获取所有记录的数量