我打算使用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}
一起使用它以使其与表格分类器一起正常工作。
感谢任何提示。谢谢,
答案 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}