滚动加载更多数据

时间:2014-06-15 17:38:43

标签: ajax request

嗨伙计们, 我已经制作了一个脚本,在滚动时发送一些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);


      }

    });
}

});

1 个答案:

答案 0 :(得分: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;

      }

    });
}

我不确定你的偏移是什么意思,你能否在评论中解释一下。