我读过这个可能对你有帮助的讨论:基本上你必须用这些选项初始化表格;
"bServerSide" : false,
"sAjaxSource" : "path to your ajax source"
这样,数据只加载一次,所有过滤都由客户端完成。
如果你想加载更多数据,你可以使用fnReloadAjax。你可以阅读this关于这个话题的讨论,我认为它有你需要的所有答案。
编辑 - 使用管道,您可以避免频繁调用服务器以进行分页(如果您过滤数据,则调用服务器)。
如果您只想将数据获取到服务器一次,然后在客户端过滤数据,则必须禁用服务器端处理(上述选项设置为白色)。如果您禁用服务器端处理,您可以为用户提供一种使用“fnReloadAjax”(例如按钮)从服务器获取附加数据的方法。
我仍然没有得到什么,您是否需要从服务器获取一些其他数据或用户首先获得的任何数据都可以?
编辑 2 - 如果您不想调用服务器,则可以通过增强现有表来完全避免使用 AJAX。只需像这样创建 html 服务器端:
<table width="770" border="0" id='rdr_home' class='tablesorter'>
<thead>
<tr>
<th>col1</th>
<th>col2</th>
<th>col3</th>
</tr>
</thead>
<tbody>
<?php
foreach ($rows as $row){
//echo all rows here (be careful as for each row you must
//have as many <td> as the column: no colspan!
}
?>
</tbody>
</table>
然后像这样创建你的数据表
oTable = $('.tablesorter').dataTable({
"aaSorting": [[2, "asc"]],
"bAutoWidth": false,
"bFilter": false,
"sDom": 'T<"clear">lfrtip',
"aoColumns": [
{ "sType": "html" },
{ "sType": "html" },
null
],
"oLanguage": {
"sUrl": "templates/rhuk_milkyway/dataTables/media/language/it_IT.txt"
}
});
有了这个,你就有了分页和过滤服务器端
编辑 3 - 在您提到的情况下(数据表负责分页但不要求过滤),我认为您必须添加一些额外的插件。您必须像这样在初始化时禁用数据表的过滤器和排序器;
"bFilter": false,
"bSort": false,
然后使用另一个组件对屏幕上的内容进行排序过滤。您可以在这里查看带有排序和过滤的解决方案:http://silverwareconsulting.com/index.cfm/2008/10/2/jquery-autofiltering-table
(我个人不喜欢通过点击进行过滤的想法,但如果您想使用更多符合您口味的东西,您可以在此基础上进行构建),无论如何您都不能使用数据表内置过滤器,如果您允许服务器端分页