1

我编写了一个简单的脚本,我在其中使用 ajax $.get 来获取我的数据以进行无限滚动。问题是,我的滚动速度可能比加载速度快,导致它加载了三倍?

function last_msg_funtion() 
{ 
    var ID=$(".feed_container").last().attr("id");
    $.ajax({
        url: "ajax/pagination.php",
        type:"get",
        data: "p="+ID
    }).done(function(data){
    if (data != "") 
        {
            var $boxes = $(data); 
            //$(".feed_container:last").after(data); 
            $("#feed_main").append($boxes).masonry('appended',$boxes);

        }
});

$(window).scroll(function(){
    var mostOfTheWayDown = ($(document).height() - $(window).height())  - 300;
    if ($(window).scrollTop() >= mostOfTheWayDown)
    {
        //alert('test');
        last_msg_funtion();
    }
}

如果我一直向下滚动,加载需要一段时间。我返回的数据last_msg_function()是获取图像的 AJAX $.get()。但是,它正在加载三倍相同的数据。有什么想法可以防止这种情况吗?

谢谢

4

2 回答 2

1

您需要设置一个“搜索”变量,该变量在空闲时为假,在搜索时为真,然后使用它来知道何时启动新搜索。

var searching = false; // new variable

function last_msg_funtion() 
{ 
    if (!searching) { // only initiate a new ajax request if this variable is false
        searching = true; // set variable to true
        var ID=$(".feed_container").last().attr("id");
        $.ajax({
            url: "ajax/pagination.php",
            type:"get",
           data: "p="+ID
       }).done(function(data){
            searching = false; // set variable to false on success
            if (data != "") 
            {
                var $boxes = $(data); 
                //$(".feed_container:last").after(data); 
                $("#feed_main").append($boxes).masonry('appended',$boxes);

            }
       });
    }
}
于 2013-09-04T11:50:41.257 回答
0

使用 G+ 并滚动到页面底部时,G+ 在获取消息之前会有一点延迟。
使用 setInterval() 它将解决您的问题。内部区间函数调用last_msg_funtion()

于 2012-05-30T04:12:33.487 回答