2014-06-15 96 views
1

Hy guys, 我已經做了一個腳本,在滾動發送一些Ajax請求。之後,我將附加響應div。問題是,在滾動擊中底部ajax將發送4-5要求改爲一個。 我已經設置了一個變量偏移量,每個請求都會增加一個。對於每個請求,我需要選擇12個項目。偏移量是計算將被跳過的行數(2 * 12,3 * 12等) 。問題是,有時偏差保持在0和一些請求後,這將增加在滾動加載更多的數據

腳本

$(document).scroll(function(){ 
    if($(window).scrollTop() + $(window).height() > $(document).height() - 500){ 

    string="offset="+offset+'&'+"plusskip="+fistskip; 
    $('#listaHolder').append('<div class="ajaxLoader"></div>'); 



    $.ajax({ 

     type: "POST", 

     url: siteURL+"libs/ajax/ajax_foto.php", 

     data:string, 

     success:function(response){ 
     offset=offset+1; 
     fistskip=0; 
     $('.ajaxLoader').remove(); 


     $('#listaHolder').append(response); 


     } 

    }); 
} 

}); 

回答

0

您滾動它會調用Ajax的功能每一次,所以當你的過去的500標誌着它將繼續調用該函數。您需要放入一些邏輯來檢查ajax是否正在加載,也許是否有更多內容需要加載。我將ajax函數和滾動監聽器分開,以使事情更輕鬆。

var loading = false; 

$(document).scroll(function(){ 
    if($(window).scrollTop() + $(window).height() > $(document).height() - 500){ 
     if(!loading) 
     { 
      ajaxFunction(); 
     } 
    } 
}); 

function ajaxFunction() 
{ 
    loading = true; 
     $.ajax({ 

     type: "POST", 

     url: siteURL+"libs/ajax/ajax_foto.php", 

     data:string, 

     success:function(response){ 
     offset=offset+1; 
     fistskip=0; 
     $('.ajaxLoader').remove(); 


     $('#listaHolder').append(response); 
     loading = false; 

     } 

    }); 
} 

我不確定你的意思是偏移量,你能否在評論中多說一點。

+0

關於ajax請求,我選擇所有行跳過已經選擇的行,例如我第一次選擇12 -offset變成1意味着我將跳過12行,對第二個請求偏移成爲2意味着我將跳過第一個已經選擇的24(12 * 2)行。 – user3677455