前端

时间:2017-07-25 11:36:07

标签: php jquery datatables

我正在使用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

1 个答案:

答案 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:为此你需要另外一个查询来获取所有记录的数量