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
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.