我对 Javascript、Node.js 或 Socket.io 没有太多经验。我正在尝试使用 jQuery 分页插件http://beneverard.github.com/jqPagination/创建一个应用程序,该插件查询 mysql 数据库(使用用户输入文本框的关键字),获取结果总数连同第一页的前 15 个结果一起返回(使用 LIMIT),然后使用结果总数来确定需要多少页。
这是我无法工作的代码片段(用于设置分页最大页数的客户端 javascript):
var maxpagenumber;
socket.on('resultsnumber', function(count)
{
maxpagenumber = ~ ~(this.count / 15) + 1;
});
$('.pagination').jqPagination({
max_page: maxpagenumber,
paged: function(page)
{
...
}
});
我查看了 Chrome 中的变量 maxpagenumber 并注意到它是未定义的。前 15 个结果的查询有效,只是分页只显示一个最大页面。
当我在网上四处寻找帮助时,我发现了一个关于访问异步回调函数之外的变量的问题:Using variable outside of ajax callback function。我使用了标记答案中的想法并将其应用于我的代码:
var setPagination = function(maxpagenum)
{
$('.pagination').jqPagination({
max_page: maxpagenum,
paged: function(page)
{
...
}
});
}
socket.on('databasenumber', function(count)
{
var maxpagenumber = ~ ~(this.count / 15) + 1;
setPagination(maxpagenumber);
});
这给出了与前面的代码片段相同的结果。到目前为止,我唯一的工作选择是:
socket.on('databasenumber', function(count)
{
var maxpagenumber = ~ ~(this.count / 15) + 1;
$('.pagination').jqPagination({
max_page: maxpagenumber,
paged: function(page)
{
...
}
});
});
在用户将新关键字输入到文本框中再次搜索之前,这非常有效。一旦用户进行第二次搜索,就会出现许多错误。有人对如何使这项工作有任何想法吗?我应该显示更多代码来解释我的问题吗?也许我只是没有正确理解这段 Javascript 代码?任何帮助或建议将不胜感激。