Динамическая подгрузка записей

187
17 ноября 2018, 07:30

Уже сломал себе мозг... Проблема такая. Мне нужно подгрузить записи если был скролинг до подвала. Уже что только не делал, но проблема в том что запрос на получение доп. блоков отправляется несколько раз. и дубликаты блоков грузятся по 5-6 раз. Вот скрипт:

$(window).scroll(function(){    
        var launch = 0;
        var foot =  $('footer').position().top - $('footer').height();
        if($(".action_block:last").attr('data-npage') >= {{$max_page}}) {
            var launch = 1;
        }
        if($(this).scrollTop()>= foot && launch == 0){
                launch = 1;
                $('#loader-icon').show();               
                var pagenum = parseInt($(".action_block:last").attr('data-npage')) + 1;
                var url = window.location.href;                 
                $.ajax({
                    url: url+'?page='+pagenum,                   
                    type: "GET",
                    beforeSend: function(){
                        $('#loader-icon').show();
                    },
                    complete: function(){
                        $('#loader-icon').hide();
                    },
                    success: function(data){
                        $("#actions_block").append(data);
                        // var launch = 0;
                    },
                    error: function(){}             
                    });
        }       
    })
Answer 1

Не посылайте новых запросов во время выполнения уже посланного.

$(window).scroll(function() { 
  if ($("#actions_block").data("loading") == "loading") // !!! 
    return; 
 
  var launch = 0; 
  var foot = $('footer').position().top - $('footer').height(); 
  if ($(".action_block:last").attr('data-npage') >= { 
      { 
        $max_page 
      } 
    }) { 
    var launch = 1; 
  } 
  if ($(this).scrollTop() >= foot && launch == 0) { 
    launch = 1; 
    $('#loader-icon').show(); 
    var pagenum = parseInt($(".action_block:last").attr('data-npage')) + 1; 
    var url = window.location.href; 
    $("#actions_block").data("loading", "loading"); // !!! 
    $.ajax({ 
      url: url + '?page=' + pagenum, 
      type: "GET", 
      beforeSend: function() { 
        $('#loader-icon').show(); 
      }, 
      complete: function() { 
        $('#loader-icon').hide(); 
        $("#actions_block").data("loading", ""); // !!! 
      }, 
      success: function(data) { 
        $("#actions_block").append(data); 
        // var launch = 0; 
      }, 
      error: function() {} 
    }); 
  } 
})

READ ALSO
Fancybox 3 как по клику на кнопку открыть галерею с inline контентом

Fancybox 3 как по клику на кнопку открыть галерею с inline контентом

Нужно чтобы по кнопке открывалась галерея inline блоков с листалкой влево и вправо подскажите пожалуйста как это реализовать?

227
Выбор отмеченных чекбоксов

Выбор отмеченных чекбоксов

На html странице имеется огромное количество чекбоксов, у них нету классов и idВопрос слудующий: Как выбрать сначала первые 4 чекбокса, дальше...

177
Закрытие модульного окна

Закрытие модульного окна

Всем приветМожет кто-то пожалуйста подсказать как закрыть модальное окно после клика на кнопку отправить форму

194
вывод картинки в select

вывод картинки в select

есть форма , использую jquery для стилизации jqueryfs

280