Ajax загрузка страницы + Masonry + Infinite Scroll

Добрый вечер

Решил немного обновить вебсайт и добавить masonry + infinite scroll
Страницы хочу подгружать через ajax и открывать во всплывающем окне
Делаю по уроку: modx.pro/development/3139-foundations-of-ajax/

Так вот все получилось, кроме ajax запросов — не передается ID и закружается все та же страница


ссылки
<a href="[[~[[+id]]]]" data-rid="[[+id]]" class="ajax"><h1>[[+pagetitle]]</h1></a>

сниппет ajax
<?php
if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {return;}
$action = filter_input(INPUT_POST,'action');
$output = '';
if (empty($action)) {return;}
switch ($action) {
    case 'getResources':
        $id= filter_input(INPUT_POST,'rid');
        $resource = $modx->getObject('modResource',array('id' => $id));
        $pagetitle = $resource->get('pagetitle');
        $content = $resource->get('content');
        echo "<h1>$pagetitle</h1>";
        break;
}
if (!empty($output)) {
    die($output);
}
?>

js
<script type="text/javascript">
$(document).on('click', 'a.ajax', function(e) {
    var data = $(this).data();
    var urlPath = $(this).attr('href');
    var title = $(this).text();
    var rid = $(this).data('rid');
      $.ajax({
        type: "POST",
        data: data,
        success: function(data) {
          document.title = title;
          history.pushState('', document.title, urlPath);
          showContent(data);
        }
      })
    function showContent(data) {
            $('#result').html(data);
    }
    return false;
  })
</script>
Andrei D.
06 сентября 2014, 20:31
modx.pro
3
2 839
0

Комментарии: 9

Павел Пустота
07 сентября 2014, 15:41
0
e.preventDefault() забыл, не?
А то у тебя просто по ссылке переход. Нужно первой строкой после
$(document).on('click', 'a.ajax', function(e) {
добавить
e.preventDefault();
    Andrei D.
    08 сентября 2014, 01:36
    0
    добавил, не решило проблему :) кроме той же страницы ничего не выводится
      Павел Пустота
      09 сентября 2014, 14:07
      0
      Я не знаю, что ты и как добавил, но ссылка всё ещё работает как ссылка. Происходит просто переход на другую страницу.
      Для начала попробуй сделать так, чтобы по клику на ссылку выводился alert('blabla');
      Возможно селектор некорректно выбирает ссылку или просто ошибка в коде.
    Andrei D.
    13 сентября 2014, 15:29
    0
    Народ, кто может помочь?)
      Алексей Карташов
      14 сентября 2014, 10:16
      +1
      rid ты никуда не передаёшь. Сохранил её в переменную, а в аякс-запрос не засунул.

      Добавь перед $.ajax(...) вот это:
      data = $.extend({}, data, {rid: rid});
      Или вот так:
      data.rid = rid;
        Andrei D.
        15 сентября 2014, 11:57
        0
        Добавил, все так же в #result выводится тестовая страница…
          Алексей Карташов
          15 сентября 2014, 12:23
          0
          Ну ты хоть покажи — что и как добавил. Я ж не гадалка
      Алексей Ерохин
      15 сентября 2014, 18:55
      0
      У Вас запрос отсылается на туже самую страницу. Пропишите нужный url в javascript на страницу, где вызывается сниппет (либо это страница без шаблона, либо напрямую к статичному сниппет, но нужно в скрипт добавить инклюд api modx)
        Алексей Ерохин
        15 сентября 2014, 19:01
        0
        А я понял. У вас сниппет вызывается в начале шаблона. Проверьте action: с сайта передается action, а в сниппете кейс на getResource
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        9