You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AJAX加载完所有文章后滚动页面CSS加载器反复显示如何解决?

问题原因

你当前的代码存在四个核心缺陷导致该bug:

  • 无请求锁:滚动事件触发频率极高,未判断是否有正在进行的AJAX请求时,会反复触发loadMore方法,导致加载器反复显隐
  • 无加载终止标记:已经没有更多文章可加载时,没有停止滚动监听或屏蔽loadMore逻辑,每次滚动到阈值都会触发无效请求
  • posts存在性判断逻辑错误:posts == 'undefined'的判断方式不成立,应该判断变量类型而非直接和字符串'undefined'对比,导致即使无数据也不会终止加载逻辑
  • 初始页码逻辑缺陷:currentPage初始值为1,你设定仅当currentPage>=2时才提取帖子内容,首次触发loadMore请求到的第一页内容不会被渲染

修复方案

直接修改前端JS代码即可,修改后的代码如下:

(function($) {
    var currentPage = 2; // 第一页已经在页面初始化时渲染完成,直接从第二页开始加载
    var isLoading = false; // 新增请求锁,避免重复请求
    var hasMorePosts = true; // 标记是否还有更多文章可加载

    $('.pagination').hide();

    $(window).scroll(function() {
        // 只有没有正在加载、还有更多文章、滚动到阈值时才触发加载
        if (!isLoading && hasMorePosts && $(window).scrollTop() >= $(document).height() - $(window).height() - 10) {
            loadMore();
        }
    });

    function loadMore() {
        isLoading = true; // 加锁
        $.ajax({
                url: baseUrl + '?page=' + currentPage,
                type: 'GET',
                beforeSend: function() {
                    $('.loader').show();
                }
            })
            .done(function(data) {
                $('.loader').hide();
                var posts = $(data).find('#postsContainer').html();
                // 判断是否还有帖子
                if (typeof posts == 'undefined' || posts.trim() == '') {
                    hasMorePosts = false; // 没有更多帖子了,终止后续加载
                    // 可选:移除滚动监听,彻底避免无效触发
                    // $(window).off('scroll');
                } else {
                    $('#postsContainer').append(posts);
                    currentPage = currentPage + 1;
                }
                isLoading = false; // 解锁
            })
            .fail(function() {
                // 请求失败也要解锁,避免后续无法加载
                $('.loader').hide();
                isLoading = false;
            });
    }

})(jQuery);

可选优化(非必须)

如果希望提升加载性能,可以单独写一个接口只返回帖子列表的HTML片段或者JSON数据,不用每次请求整个页面,减少数据传输体积和DOM查找的开销。

内容的提问来源于stack exchange,提问作者Razvan Zamfir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 21:27:00