2017-08-25 63 views
1

我需要for循環的一點幫助。For循環與js的樹枝

我有一個數組下有25個項目。當我在頁面上呈現,然後通過for循環第1 10項我顯示和其餘15項滾動我通過ajax調用顯示。在第1 ajax調用我顯示10項,其餘5項顯示在第2 ajax調用。在這個ajax調用我發送產品ID,以便我可以從數據庫中獲得產品。

注意: - 如果我有100個項目,我發送10個Ajax電話。

我想要的是我發送的ajax調用,在那個第一個ajax調用中,我發送了10個項目id,剩餘的5個項目id我在第二個ajax調用中發送。

現在我的代碼在兩個ajax調用中發送15個項目標識符。

這裏是代碼: -

var prodId = new Array(); 
    {% for pd in entities %} 
     {% if loop.index <= 10 %} 
      prodId.push('{{ pd.id }}'); 
     {% endif %} 
    {% endfor %} 

    $(document).ready(function(){ 
    var count=25;//This is dynamic 

    if (count>10) { 
     count=count-10; 
    } 

    $(window).scroll(function(){ 
      var scrollH = $(window).scrollTop()+$(window).height(); 
      var documentH = $(document).height(); 
      var infty_scrl_end=$('#sectiontop').offset().top; 
      if (count>0) { 
      console.log(prodId); 
       if(scrollH > infty_scrl_end){ 
        $.ajax({ 
         url: "url_ajax", 
         type: "POST", 
         data: { "data" : prodId }, 
         success: function(data) { 
          $(data).appendTo('.container'); 
         } 
        }); 
        count=count-10; 
       } 
      } 


    }); 
    }); 

謝謝!

+0

什麼的console.log輸出(PRODID); – LogicBlower

+0

@LogicBlower感謝您的評論。 console.log(prodId)打印項目標識符如: - [0] => 4 [1] => 9 [2] => 10 [3] => 22 [4] => 17等。 – Sid

+0

prodid是包含15個項目的數組,它正在通過ajax發送到服務器(數據)? ,如果是的話,那麼切割id的邏輯在哪裏(比如從proid數組只發送5個id到服務器)?就像我正在跟蹤你正在發送proid id到服務器並且想要這個id的結果一樣。希望我想說什麼讓敏感 – LogicBlower

回答

0

你可以用隊列來解決這個工作,

var prodId = new Array(); 
{% for pd in entities %} 
    prodId.push('{{ pd.id }}'); //Fill up the total queue 
{% endfor %} 

$(function() { 
    $(window).scroll(function() { 
     var scrollH = $(window).scrollTop() + $(window).height(); 
     var documentH = $(document).height(); 
     var infty_scrl_end = $('#sectiontop').offset().top; 

     if (scrollH > infty_scrl_end){ 
      loadQueue(); 
     } 
    }); 

    loadQueue(); 
}); 


function loadQueue() { 
    if (prodId.length == 0) return; 

    //split the queue in parts of 10 
    var tmp = new Array();  
    while(tmp.length < 10 && prodId.length > 0) { 
     tmp.push(prodId.shift()); 
    } 
    if (tmp.length == 0) return; 

    $.ajax({ 
     url: "url_ajax", 
     type: "POST", 
     data: { "data" : prodId }, 
     success: function(data) { 
      $(data).appendTo('.container'); 
     } 
    }); 

} 
+0

感謝您的支持。此代碼使3 ajax調用,但這也是在第一次ajax調用中發送所有剩餘的15個id。我希望如果25個項目,然後10個項目,我已經展示了沒有Ajax和剩餘的15個ID我想通過2 Ajax調用時顯示用戶滾動。 – Sid

+0

你的意思是剩下15個?這段代碼只是發送你的產品ID爲10塊,並提取它們 – DarkBee

+0

這段代碼發送所有在第一個Ajax和第二個Ajax調用的ID,所以第三個Ajax調用是空的,並在第一個和第二個AJAX調用中發送相同的ID ......所有其餘15個意味着如果我有25個項目,然後10個項目,我已經展示了沒有Ajax調用,剩餘15個我想通過ajax調用顯示...所以剩下的15個項目使2個Ajax調用第一個Ajax調用10個項目和第二個Ajax調用5項。 – Sid