gpt4 book ai didi

javascript - 访问 socket.io 回调函数外部的变量

转载 作者:太空宇宙 更新时间:2023-11-04 02:42:58 27 4
gpt4 key购买 nike

我对 Javascript、Node.js 或 Socket.io 没有太多经验。我正在尝试创建一个带有 jQ​​uery 分页插件的应用程序,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 代码?任何帮助或建议将不胜感激。

最佳答案

问题似乎是您只设置了一次 maxpagenumber 。每次数据集更改时,您确实需要进行设置。我认为重新设计的第二组的某种组合将是最好的,但我对 jqPagination 控件不是 100% 熟悉,所以这可能是事情无法解决的地方。您可能需要通过某些 API 调用为其提供新的 maxPageNum?

关于javascript - 访问 socket.io 回调函数外部的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11761284/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com