Tablesorter服务器端分页 - 不同Ajax选项的要求

时间:2013-05-28 04:14:36

标签: jquery pagination server-side tablesorter

我打算使用tablesorter的Ajax服务器端分页功能,但有一些关于它是如何工作的问题。 2.10.0的文档说:

  

ajaxProcessing函数已更新为仅需要返回总行数,而不是返回表行数组,您可以自己构建表并返回包含这些行的jQuery对象

如果您自己构建表(我假设这意味着下一组行的完整HTML,包括单元格值),ajaxUrl是否仍需要返回行集的JSON信息,或者它是否应返回HTML for桌子?如果要返回JSON信息,那么表如何输入到jQuery中?

ajaxProcessing只能将总行数和$行作为对象或数组返回,或者也可以返回标题:什么决定哪些是这些选项的最佳选择?如何创建$ rows对象?一般来说,如何更改代码以实现这些不同的选项?

对不起,如果我对此有点慢,感谢任何指示。

此致

林顿


在这里继续我的问题,更详细地介绍一件我感到困惑的事情:

我的ajaxUrl会将下一组行作为HTML获取,并且分页的正常语法(即没有表格分类器)是:

databasequery.php?offset=0&numrows=25

Offset和numrows是定义为php调用的一部分的变量。我不清楚如何与size={size}&page={page}一起使用它以使其与表格分类器一起正常工作。

感谢任何提示。谢谢,

1 个答案:

答案 0 :(得分:5)

原始ajaxProcessing option要求您返回:

  • 总行数(必填),
  • 行;在数组数组中
  • 可选标头单元格文字

采用严格的格式:

// [ total_rows (number), rows (array of arrays), headers (array; optional) ]
return [
  100,  // total rows
  [
    [ "row1cell1", "row1cell2", ... "row1cellN" ],
    [ "row2cell1", "row2cell2", ... "row2cellN" ],
    ...
    [ "rowNcell1", "rowNcell2", ... "rowNcellN" ]
  ],
  [ "header1", "header2", ... "headerN" ] // optional
]

现在,行可以作为行的jQuery对象返回,然后插件会添加和更新(这只是一个示例):

var i, j, rows = '';
for (i = 0; i < data.rows.length; i++) {
  rows += '<tr>';
  for (j = 0; j < data.rows[i].cells.length; j++) {
    rows += '<td>' + data.rows[i].cells[j] + '</td>';
  }
  rows += '</tr>';
}
// [ total rows, $rows (jQuery object; optional), headers (optional) ]
return [ data.total, $(rows), data.headers ];

最后,您可以自己添加行,只返回总行数:

var i, j, rows = '';
for (i = 0; i < data.rows.length; i++) {
  rows += '<tr>';
  for (j = 0; j < data.rows[i].cells.length; j++) {
    rows += '<td>' + data.rows[i].cells[j] + '</td>';
  }
  rows += '</tr>';
}
$('#mytable').find('tbody').html( rows );
// [ total rows, headers (optional) ]
return [ data.total ];

上述类似示例也包含在ajaxProcessing option

的文档中

所以,回答你的问题

  

ajaxUrl是否仍然需要返回行集的JSON信息,还是应该返回表的HTML?如果要返回JSON信息,那么表如何输入到jQuery中?

ajaxUrl option不需要返回任何内容。它仅用作通过向服务器发送适当的页码,过滤查询和列排序方向来获取下一组数据的方法。它不应该返回任何HTML。寻呼机插件将在处理完表后更新。

  

如何创建$ rows对象?一般来说,如何更改代码以实现这些不同的选项?

希望我上面分享的例子回答了这个问题。但如上所述,上面的代码只是一个例子,因为返回的ajax几乎可以是任何格式。现在不再需要构建数组数组以返回到寻呼机插件。

  

什么决定了哪些是这些选项的最佳选择?

最好的选择留给你。编写了寻呼机插件,为您提供更多关于如何应用ajax数据的选择。您实际上可以完全绕过寻呼机插件并自己进行ajax处理,然后只需更新寻呼机。这就是使系统灵活并希望在许多不同情况下工作的原因。


在回答您的延续时,请尝试将其用作ajaxUrl字符串:

databasequery.php?offset={page}&numrows={size}

如果numrows固定为25行,那么您可以删除{size},因为我猜您的服务器端脚本总是会返回最多25行的数据:

databasequery.php?offset={page}