Answer the question
In order to leave comments, you need to log in
AJAX modx news loading - how to do it?
Hello. Please help with the implementation of block loading on the MODX engine. Namely, by pressing the button there is a load, I can only do what would initially be displayed several blocks BEFORE pressing the button.
$(document).ready(function() {
var offset = 0;
// Вешаем обработчик события "клик" на кнопку с классом .more
$('button.more').click(function() {
// Ajax post-запрос к странице, выдающей ресурсы (в ней сниппет ajaxResources)
var data = $(this).data();
$.post('http://projects.axblue.ru/gorod.html', data, function(data) {
offset +=2;
// Выдаем ответ
$('.news-list').append(data);
$('button.more').data('offset', offset);
})
})
})
<?php
// Отвечаем ТОЛЬКО на ajax запросы
if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {return;}
// данный код можно расширить добавив другие действия и указать их в case
$action = filter_input(INPUT_POST,'action');
// Если в массиве POST нет действия - выход
if (empty($action)) {return;}
// А если есть - работаем
$res = '';
switch ($action) {
case 'getResources':
// Задаём параметры для сниппета в AJAX запросе
$params = array();
$params['tpl'] = filter_input(INPUT_POST,'tpl');
$params['parents'] = filter_input(INPUT_POST, 'parents', FILTER_SANITIZE_NUMBER_INT);
$params['offset'] = filter_input(INPUT_POST, 'offset', FILTER_SANITIZE_NUMBER_INT);
$params['limit'] = filter_input(INPUT_POST, 'limit', FILTER_SANITIZE_NUMBER_INT);
$res = $modx->runSnippet('getResources', $params); break;
}
// Если у нас есть, что отдать на запрос - отдаем и прерываем работу парсера MODX
if (!empty($res)) {
die($res);
}
<button class="btn btn-blue more" data-limit="2" data-action="getResources" data-tpl="tpl.getResources.row" data-parents="40">Показать ещё</button>
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question