2017-08-25 60 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