@0348raven

Как добавлять к значению переменной 1 при скролле каждый раз до тех пор пока не будет получен пустой массив?

Данные отдаются карточками по 20 штук, таких страниц может быть разное количество от 1 до бесконечности.

Задача: подгрузка ajax при скролле.

$(document).ready(function(){

    ajaxLoadScroll ();

});

function ajaxLoadScroll(){
    var countListing = 1; //так как первая страница уже выведена при подгрузке необходимо получать начиная со второй

   $(document).on('scroll', function () {
        var $container = $('.container').height() - 500; 
        if($(this).scrollTop() > $container) {

           $(document).off('scroll');
           countListing++;

         $.getJSON('/subscriptions/' + countListing, function(data) {
                  var cards = data.cards; 
                 if (cards.length !== 0) {
                 } else {
                 }
         });
     });
});
}


Явная проблема в том, что вторую страницу получает, а последующие нет (по очевидным причинам). Как хранить состояние переменной и запускать скрипт подгрузки заново до тех пор пока cards не станет пустым массивом?
  • Вопрос задан
  • 160 просмотров
Решения вопроса 1
bubandos
@bubandos
bash'у, javascript'ую, php'лю, css'аю, html'каю
А зачем грохать обработчик события? Сделайте флаг, который сигнализирует, что загрузка уже идет.
function ajaxLoadScroll() {
        var countListing = 1;
        var run = true;
        $(document).on('scroll', function() {
                if (run) {

                    var $container = $('.container').height() - 500;
                    if ($(this).scrollTop() > $container) {
                        run = false; // отключаем подгрузку
                        countListing++;
                        $.getJSON('/subscriptions/' + countListing, function(data) {
                            var cards = data.cards;
                            if (cards.length !== 0) {}
                            else {}
                            // снова возвращаем run к нужному состоянию, чтобы обрабатывать скролл и включить подгрузку
                            run = true;
                        });
                    }
                });
        });
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы