0

我有这个代码:

$(window).scroll(function () { 

    if ($(window).scrollTop() >= $(document).height() - $(window).height() - 10) {

        var site_url = $("#site_url").val();
        var post_url = site_url+"index.php/ajax/get_more_users";
        $("#loading_more_users").show();
        var users_page = $("#users_page").val();


        //alert("y");
        $.post(post_url, {'page': users_page}, function(data){              
                //alert("x");
            $("#loading_more_users").hide();
            $("#left_members_collumn").append(data);
            $("#users_page").val(eval(Number(users_page)+1));


        });

   }
});

任何人都可以告诉我为什么在滚动底部时 $.post 会执行一次、两次或三次?我得到重复的内容。main函数执行的很好,但是不知道为什么会有多个ajax请求。

谢谢你。

4

2 回答 2

3

滚动多次触发,条件满足您的 if 条件。你可以做些什么来防止这种情况发生,设置一个布尔值来表示你正在发布,所以你不会发布两次:

var isPosting = false;
$(window).scroll(function () { 

    if (!isPosting && $(window).scrollTop() >= $(document).height() - $(window).height() - 10) {
        isPosting = true;
        var site_url = $("#site_url").val();
        var post_url = site_url+"index.php/ajax/get_more_users";
        $("#loading_more_users").show();
        var users_page = $("#users_page").val();


        //alert("y");
        $.post(post_url, {'page': users_page}, function(data){              
                //alert("x");
            $("#loading_more_users").hide();
            $("#left_members_collumn").append(data);
            $("#users_page").val(eval(Number(users_page)+1));
            isPosting = false;

        });

   }
});
于 2013-01-12T02:37:47.617 回答
2

每次滚动时,您都会执行 ajax 请求,因为您将此函数绑定到$(window).scroll()函数。如果您if返回 true,那么您将执行ajax request.

要驱逐它,您可以使用onejquery 中的函数函数:

$(window).one('scroll', function () { 

    if ($(window).scrollTop() >= $(document).height() - $(window).height() - 10) {

        var site_url = $("#site_url").val();
        var post_url = site_url+"index.php/ajax/get_more_users";
        $("#loading_more_users").show();
        var users_page = $("#users_page").val();


        //alert("y");
        $.post(post_url, {'page': users_page}, function(data){              
            //alert("x");
            $("#loading_more_users").hide();
            $("#left_members_collumn").append(data);
            $("#users_page").val(eval(Number(users_page)+1));
        });
   }
});
于 2013-01-12T02:41:44.913 回答