Ajax загрузка страницы + Masonry + Infinite Scroll
        Добрый вечер
Решил немного обновить вебсайт и добавить masonry + infinite scroll
Страницы хочу подгружать через ajax и открывать во всплывающем окне
Делаю по уроку: modx.pro/development/3139-foundations-of-ajax/
Так вот все получилось, кроме ajax запросов — не передается ID и закружается все та же страница
ссылки
сниппет ajax
js
    
    
                                                                                
            Решил немного обновить вебсайт и добавить 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>    Комментарии: 9
                e.preventDefault() забыл, не?
А то у тебя просто по ссылке переход. Нужно первой строкой после
                    А то у тебя просто по ссылке переход. Нужно первой строкой после
$(document).on('click', 'a.ajax', function(e) {добавитьe.preventDefault();            
                добавил, не решило проблему :) кроме той же страницы ничего не выводится            
                    
                Я не знаю, что ты и как добавил, но ссылка всё ещё работает как ссылка. Происходит просто переход на другую страницу.
Для начала попробуй сделать так, чтобы по клику на ссылку выводился alert('blabla');
Возможно селектор некорректно выбирает ссылку или просто ошибка в коде.
                    Для начала попробуй сделать так, чтобы по клику на ссылку выводился alert('blabla');
Возможно селектор некорректно выбирает ссылку или просто ошибка в коде.
                Народ, кто может помочь?)            
                    
                rid ты никуда не передаёшь. Сохранил её в переменную, а в аякс-запрос не засунул.
Добавь перед $.ajax(...) вот это:
                    Добавь перед $.ajax(...) вот это:
data = $.extend({}, data, {rid: rid});Или вот так:data.rid = rid;            
                Добавил, все так же в #result выводится тестовая страница…            
                    
                Ну ты хоть покажи — что и как добавил. Я ж не гадалка            
                    
                У Вас запрос отсылается на туже самую страницу. Пропишите нужный url в javascript на страницу, где вызывается сниппет (либо это страница без шаблона, либо напрямую к статичному сниппет, но нужно в скрипт добавить инклюд api modx)            
                    
                А я понял. У вас сниппет вызывается в начале шаблона. Проверьте action: с сайта передается action, а в сниппете кейс на getResource            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.