Javascript ajax$.get()-请求两次

Javascript ajax$.get()-请求两次,javascript,jquery,ajax,Javascript,Jquery,Ajax,如果到达页面底部,此js代码将从服务器加载更多内容: if ($(window).scrollTop() + $(window).height() == getDocHeight()) { var next_pagenumber = parseInt($('#next_pagenumber').val()); var num_pages = parseInt($('#num_pages').val()); if(next_pagenumber <= num_pag

如果到达页面底部,此js代码将从服务器加载更多内容:

if ($(window).scrollTop() + $(window).height() == getDocHeight()) {
    var next_pagenumber = parseInt($('#next_pagenumber').val());
    var num_pages = parseInt($('#num_pages').val());

    if(next_pagenumber <= num_pages){
      $.get("?page_number=" + (next_pagenumber).toString(), function(data) {
         if(data != "nomore"){
             setTimeout(
                 function(){
                      $('#next_pagenumber').val(next_pagenumber+1);
                      $('#morenews').append(data);
                 }, 500);
        }else{
             $('#loadmore').hide();
        }
      });

   }else{
      console.log('no more pages to load');
        }
   }
if($(窗口).scrollTop()+$(窗口).height()==GetDochHeight()){
var next_pagenumber=parseInt($('next_pagenumber').val();
var num_pages=parseInt($('num_pages').val();

if(next_pagenumber这里是Bharath提到的测试用例。将布尔变量设置为true,并在成功后将其设置为false

我在检查页码的IF语句中检查布尔值是否为true

var ajaxTest = true;
if ($(window).scrollTop() + $(window).height() == getDocHeight()) {
    var next_pagenumber = parseInt($('#next_pagenumber').val());
    var num_pages = parseInt($('#num_pages').val());

    if(next_pagenumber <= num_pages && ajaxTest == true){
      $.get("?page_number=" + (next_pagenumber).toString(), function(data) {
         ajaxTest = false; 
         if(data != "nomore"){
              setTimeout(
                 function(){
                      $('#next_pagenumber').val(next_pagenumber+1);
                      $('#morenews').append(data);
                 }, 500);
        }else{
             $('#loadmore').hide();
        }
      });

   }else{
      console.log('no more pages to load');
        }
}
var ajaxTest=true;
如果($(窗口).scrollTop()+$(窗口).height()==getDocHeight()){
var next_pagenumber=parseInt($('next_pagenumber').val();
var num_pages=parseInt($('num_pages').val();

if(next_pagenumber)您可能需要查看一个
去盎司
函数。使用一个布尔值-在ajax启动时将其设置为true,如果成功,则将其设置为false。这会起作用。@JamieDixon听起来不错,但找不到适合我的例子:(可能重复为什么在
$中使用超时。get()
success callback?关于去Bouncing事件,请参见例如:您设置
var ajaxTest=true;
在每个滚动事件中,变量是否不必是全局变量?@doniyor您应该真正去Bouncing事件,这通常是避免您遇到的行为的最佳方法。我同意,不过,我只是在上面展示了一个注释示例。This可能不是最干净的方式,但它是一种方式。:@a.Wolff你的权利。我会看看debouncing。我一直想尝试it@MikeLegacy是的,我想还有一种方法,就是在成功回调中重置全局变量。也许OP想要某种无限滚动