记一次使用JQuery的Pagination分页插件时死循环BUG定位

前因

博主在写项目的时候,数据库数据比较多,所以在前端需要做一个分页,于是在某视频教程的推荐下,使用了基于JQuery的Pagination分页插件,根据该插件的demo编写js代码如下:

<script type="text/javascript">
    $(function(){
        initPagination();
    });
    function initPagination() {
        var totalRecord = ${requestScope.pageInfo.total};
        var properties = {
            num_edge_entries: 3,
            num_display_entries: 5,
            callback: pageSelectCallback,
            current_page: ${requestScope.pageInfo.pageNum-1},
            items_per_page: ${requestScope.pageInfo.pageSize},
            prev_text: "上一页",
            next_text: "下一页"
        };
        $("#Pagination").pagination(totalRecord, properties);
    }
    function pageSelectCallback(pageIndex, jQuery) {
        var pageNum = pageIndex + 1;
        window.location.href = "/admin/get/page.html?pageNum=" + pageNum;
        return false;
    }
</script>

<div id="Pagination" class="pagination"><!-- 这里显示分页 --></div>

上述代码的理想状态如图所示:
在这里插入图片描述
最下方就是js代码生成的分页条,当点击事件发生后,就自动调用回调函数pageSelectCallback进行页面跳转。
问题就出在这,当我加载这个页面后,页面开始不断地自我跳转刷新,这就让我很疑惑了。

BUG定位

页面不断地自我跳转,而我的代码中又只有回调函数中拥有跳转页面的功能,所以猜测是在插件初始化完成后,回调函数被自动调用了,而自动调用了回调函数就会发生页面跳转,而页面跳转后插件又要再次初始化,于是就进入了死循环。根据查找资料后在jquery.pagination.js【1.2版本】代码中发现如下代码:

// 所有初始化完成,绘制链接
drawLinks();
// 回调函数
opts.callback(current_page, this);

可见猜测无误,在所有初始化完成后,回调函数确实被自动调用了。

BUG修复

修改jquery.pagination.js【1.2版本】代码如下:

// 所有初始化完成,绘制链接
drawLinks();
// 回调函数
// opts.callback(current_page, this);

将该行代码注释,禁止初始化后自动调用回调函数。

后续

在代码改完后,启动项目发现还有这个死循环的问题,这可给我头秃了,到处找BUG,找了快一个小时,后来下班了,临时提交了代码,打算回家继续找,到家后代码一拉,项目一启动,死循环问题没了,于是我怀疑是浏览器的缓存问题,浏览器把我之前那个js代码缓存了下来,第二天到公司一试,果然是这个问题,本次BUG查找几经波折,完结撒花。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值