将数据表页码传递给webservice

时间:2015-04-01 11:55:05

标签: jquery web-services pagination limit jquery-datatables

我正在使用datatables和jQuery。

我使用Web服务的结果填充表格。此Web服务需要在关联查询中包含LIMIT子句,因为页面需要很长时间才能加载。

所以我的目标是在我的webservice调用中使用页码:

如果我点击第2页,我将发布20,40到极限,如果我点击第3页,我将发布30,50。

所以基本上它将是:

page number clicked * 10 对于起始范围和 page number clicked * 10 + 20 对于LIMIT条款的完成范围。

然而,显示的页面编号是基于结果的数量,如果我发布我的网络服务的LIMIT为0,20那么只有20个结果,我桌子底部的页码显然不会有2个,3,4等作为选项,最初只返回20行。

有什么方法吗?

有没有更好的方法来实现我想要实现的目标?

一些代码:

$(document).ready(function()
{
   tableAllocation('<?php echo $_SESSION['AuthCode']?>');

   $('#table_id').dataTable( {
    "pageLength" : "20",
    "order": [[ 0, "asc" ],[1, "asc"]]
    });

});

表分配是一个js函数,它调用webservice并解析响应以填充我的数据表

1 个答案:

答案 0 :(得分:1)

有一个易于实施的现成解决方案。它处理诸如LIMIT,订购,分页等开箱即用的小事。以下是mySQL,为long range of databases and architectures制作了类似的解决方案。

1 )转到https://legacy.datatables.net/examples/data_sources/server_side.html并将“服务器端(PHP)代码”复制到文件中,您可以将其称为datatables.php

2 )编辑datatables.php凭据:

$gaSql['user']       = "user";  
$gaSql['password']   = "password";  
$gaSql['db']         = "database";  
$gaSql['server']     = "localhost";  

3 )配置datatables.php表格和列设置:

表名

$sTable = "database table";  

要显示哪些列

$aColumns = array( 'column1', 'column2' ... );

指定索引列,这很重要

$sIndexColumn = "index column";

索引列不必包含在$aColumns

4 )构建标记

<table id="example">
<thead>
    <tr>
        <th>column1</th>
        <th>column2</th>
    </tr>
</thead>
<tbody>
</tbody>
</table>

5 )使用datatables.php将数据表创建为服务器端驱动的数据表:

$('#example').dataTable({
    bProcessing: true,
    bServerSide: true,
    sAjaxSource: "datatables.php"
});

上述解决方案适用于1.9.x和1.10.x dataTables版本/分支。