2015-10-13 150 views
1

我使用DataTable通过serverSide模式和ajax显示我的数据。
一切都还好,但分页不起作用。DataTable分页不起作用

您可以查看代码如下:

HTML:

<table id="table" class="display" cellspacing="0" width="100%"> 
    <thead> 
     <tr> 
      <td>ID</td> 
      <td>First name</td> 
      <td>Last name</td> 
      <td>Email</td> 
     </tr> 
    </thead> 
    <tbody></tbody> 
</table> 

的Javascript:

$(document).ready(function() { 
    $('#table').DataTable({ 
     serverSide: true, 
     ajax: { 
      url: '<?php echo base_url(); ?>folder/class/method' 
     }, 
     processing: true, 
     scrollY: 370, 
     paging: true, 
     bJQueryUI: true 
    }); 
}); 

,从服务器(JSON)返回如下数据:

{ 
    "draw": 1, 
    "recordsTotal": 1208, 
    "recordsFiltered": 10, 
    "data": [ 
     ["1", "pando", "rewar", "[email protected]"], 
     ["2", "chori", "raon", "[email protected]"], 
     ["3", "Gorbat", "horiz", "[email protected]"], 
     ["4", "martin", "sokza", "[email protected]"], 
     ["5", "dooz", "solda", "[email protected]"], 
     ["6", "maro", "meza", "[email protected]"], 
     ["7", "nod", "ion", "[email protected]"], 
     ["8", "kaz", "loob", "[email protected]"], 
     ["9", "Barbara", "Elliott", "[email protected]"], 
     ["10", "Kendall", "Nathaniel", "[email protected]"] 
    ] 
} 

DataTable的所有组件都正常工作,但分页没有。

+1

我猜测它与你有关,使用该顶部下拉菜单将结果设置为25。它的底部显示25个条目中的25个,从1208中过滤出来。它应该显示120个中的25个。 – Mike

+0

@Mike:很好,但现在的问题是'recordsTotal'和'recordsFiltered'从中获取数据同一来源。我认为'recordsTotal' =表中的所有行(例如:1208)和'recordsFiltered' =一次显示的数据(例如:25)。但现在我改变了相同的来源(例如:1208)。 –

回答

0

参数recordsFiltered必须等于recordsTotal除非用户执行搜索。有关发送和接收参数的更多信息,请参阅manual

还要确保你在响应中返回了相同的draw参数值。 JSON responsedraw参数的值必须与来自request的参数draw的值匹配。

+0

谢谢,我已经从手册中得到了:'recordsTotal' =“数据库中记录的总数”和“recordsFiltered' =”应用过滤后的记录总数 - 不仅仅是返回的记录数这页数据“。老实说,我还是不明白他们之间的区别 –

+0

@LionKing,如果你搜索一个术语'伦敦',例如,'recordsTotal'应该仍然包含所有记录的总数,而'recordsFiltered'应该包含数字在其中记录了术语“伦敦”。 –

+0

现在我明白了这个想法。 –