2012-05-30 69 views
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(),我正在獲取圖像。但是,它加載了相同數據的三倍。任何想法來防止這種情況?

感謝

回答

0

當G +工作,滾動到頁面底部,G +擁有獲取消息之前有點延遲。
使用setInterval()它將解決您的問題。裏面的間隔函數調用last_msg_funtion()

+0

setInterval()不適用於我。我發現它會重複三次....不是兩次或四次,但它會一直重複三次? – hellomello

1

你需要設置一個「搜索」變量,當空閒時爲false,當搜索時爲真,然後用它來知道何時開始一個新的搜索。

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); 

      } 
     }); 
    } 
}