masonry не подгружает следующую страницу

yaski

web3
Регистрация
21 Фев 2010
Сообщения
658
Реакции
500
Поставил на Для просмотра ссылки Войди или Зарегистрируйся бесконечную прокрутку аля вконтакте Для просмотра ссылки Войди или Зарегистрируйся.
Но почему-то не загружается следующая страница
Без скрипта следующая страница в пагинации нормально загружается.
Помогите найти где ошибка

Сам код вызова
HTML:
$(document).ready(function(){     

    $('#product_block').imagesLoaded(function(){
      $('#product_block').masonry({
        itemSelector: '.item',
      });
    });
   
    $('#product_block').infinitescroll({
      navSelector  : '.bx-pagination ul',    // selector for the paged navigation
      nextSelector : '.next_page_link a',  // selector for the NEXT link (to page 2)
      itemSelector : '.item',     // selector for all items you'll retrieve
      debug: true, // выводит ошибки на консоль
      loading: {
          finishedMsg: 'No more pages to load.',
          img: '//i.imgur.com/6RMhx.gif'
        }
   
      },
      // trigger Masonry as a callback
      function( newElements ) {
        // hide new items while they are loading
        var $newElems = $( newElements ).css({ opacity: 0 });
        // ensure that images load before adding to masonry layout
        $newElems.imagesLoaded(function(){
          // show elems now they're ready
          $newElems.animate({ opacity: 1 });
          $('#product_block').masonry( 'appended', $newElems);
        });
      }
    );
   
  });
 
Движок сайта видит заголовок "X-Requested-With: XMLHttpRequest" и понимая, что к нему пришел аякс запрос, пытается его обработать иначе, чем обычное отображение страницы.

Надо переделать бэкенд сайта или изменить masonry, чтобы он не посылал это поле, по рецептам отсюда:
Для просмотра ссылки Войди или Зарегистрируйся
 
Просто по клику на следующую страницу нормально переходит Для просмотра ссылки Войди или Зарегистрируйся
Значит проблема в настройках masondry. Не совсем понимаю принцип его работы
Добавил дестрой по совету Для просмотра ссылки Войди или Зарегистрируйся,
HTML:
    // Destroy
    $('#product_block').infinitescroll('destroy');
    $('#product_block').data('infinitescroll', null);
теперь подгрузка идет, но по факту данные не находит

HTML:
$(document).ready(function(){     

    $('#product_block').imagesLoaded(function(){
      $('#product_block').masonry({
        itemSelector: '.item',
      });
    });
   
    // Destroy
    $('#product_block').infinitescroll('destroy');
    $('#product_block').data('infinitescroll', null);
    $('#product_block').infinitescroll({
      navSelector  : '.bx-pagination ul',    // selector for the paged navigation
      nextSelector : '.next_page_link a',  // selector for the NEXT link (to page 2)
      itemSelector : '.item',     // selector for all items you'll retrieve
    debug: true, // выводит ошибки на консоль
      loading: {
          finishedMsg: 'No more pages to load.',
          img: '//i.imgur.com/6RMhx.gif'
        }
   
      },
      // trigger Masonry as a callback
      function( newElements ) {
        // hide new items while they are loading
        var $newElems = $( newElements ).css({ opacity: 0 });
        // ensure that images load before adding to masonry layout
        $newElems.imagesLoaded(function(){
          // show elems now they're ready
          $newElems.animate({ opacity: 1 });
          $('#product_block').masonry( 'appended', $newElems);
          $('#product_block').masonry('reloadItems').masonry();
        });
      }
    );
  });
 
Последнее редактирование:
Просто по клику на следующую страницу нормально переходит Для просмотра ссылки Войди или Зарегистрируйся
Значит проблема в настройках masondry. Не совсем понимаю принцип его работы
Добавил дестрой по совету Для просмотра ссылки Войди или Зарегистрируйся,
HTML:
    // Destroy
    $('#product_block').infinitescroll('destroy');
    $('#product_block').data('infinitescroll', null);
теперь подгрузка идет, но по факту данные не находит
у вас ошибка.
Не:
Код:
$('#product_block').infinitescroll
а правильно:
Код:
$('#product_block').infiniteScroll
"верблюжья нотация" :)
Т.е. infinitescroll - нет такого свойства у объекта, есть infiniteScroll.
 
Помог совет Для просмотра ссылки Войди или Зарегистрируйся
Закомментировал в masonry отправку заголовка
req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
все заработало, начало отдавать обычную страницу вместо JSON
 
Назад
Сверху