Вызов через AJAX pdoPage c включенным ajax mode
Здравствуйте!
Мастерю небольшой магазинчик, в котором 8 категорий и не так много товаров, и заказчик захотел, чтобы вся работа с товарами была на одной странице, то есть есть список категорий, при клике на категорию происходит ajax запрос с id категории, сниппет запускает msProducts из нужной категории и все работает хорошо. Однако, если обернуть вызов в pdoPage с включенным ajax-mode, то ответ приходит пустой. При этом, если ajax-mode отключен, то данные приходят. Я подозреваю, что все дело в том, что я вызываю через AJAX сниппет с AJAX, и он ничего не понимает, что делать, как и я :(
Обращение к сниппету на JS делаю так:
Мастерю небольшой магазинчик, в котором 8 категорий и не так много товаров, и заказчик захотел, чтобы вся работа с товарами была на одной странице, то есть есть список категорий, при клике на категорию происходит ajax запрос с id категории, сниппет запускает msProducts из нужной категории и все работает хорошо. Однако, если обернуть вызов в pdoPage с включенным ajax-mode, то ответ приходит пустой. При этом, если ajax-mode отключен, то данные приходят. Я подозреваю, что все дело в том, что я вызываю через AJAX сниппет с AJAX, и он ничего не понимает, что делать, как и я :(
Обращение к сниппету на JS делаю так:
<script>
var trigger = $(this).data('trigger');
var action = $(this).data('action');
var resultHTML = '#products';
$.post('ajax.php', {
trigger: trigger,
action: action
}, function(data) {
$(resultHTML).html(data);
});
</script>
Сниппет ajax.php (все стандартно, по заметке Василия):<?php
define('MODX_API_MODE', true);
require 'index.php';
$pdo = $modx->getService('pdoTools');
if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {
return;
}
if (empty($_POST['trigger'])) {
return;
}
$res = '';
switch ($_POST['trigger']) {
case 'cancel-category':
$res = $pdo->runSnippet('pdoPage',array(
'element' => 'msProducts',
'limit' => '20',
'where' => '{"Data.popular":"1"}',
'tpl' => '@FILE:chunks/category/products_row.tpl',
'ajaxMode' => 'default',
'ajaxTplMore' => '@INLINE <button class="btn btn-warning btn-more">Загрузить еще</button>'
));
break;
}
if (!empty($res)) {
die($res);
}
Поблагодарить автора
Отправить деньги