Как вызвать pdoPage с помощью ajax из своего файла php ?

Здравствуйте, подскажите пожалуйста, что-то не могу разобраться с pdoPage, сначала кратко суть расскажу а потом уже по коду.
На странице есть выпадающий списком а в нём три раздела- «Топ стилист», «Стилист», «Мастер универсал», для каждого разделе есть услуги, при выборе какого либо раздела должны выводиться соответствующие услуги по средствам ajax и если этих услуги много, должна быть пагинация. По умолчанию выводятся услуги Топ стилиста.
Что бы выводились услуги Топ стилиста по умолчанию, я сделал просто вызов pdoPage, в самом ресурсе:
[[!pdoPage?
        &class=`MainSeviceName`
        &tpl=`tpl.listServices`
        &element=`Getdb`
        &where=`{"page":"1"}`
        &limit=`5`
        &sortby=`{"id":"DESC"}`
        &ajaxMode=`default`
    ]]
И тут собственно всё в порядке, но далее вот что…
Есть у меня такая вот пользовательская функция, она делает ajax запрос при выборе элемента из выпадающего списка, отправляя id категории, что бы сервер по этом id вернул нам услуги:
var SelectServicesShow = function() {
	$("#formServices").change(function() {
		var IDServices = $("#valServices").val();
		$.ajax({
			dataType: "HTML",
			type: "POST",
			url: "/assets/template/adm/db_main.php",
			data: {"ID_serv":IDServices},
			success: function(data) {
				$(".tableAjax").empty();
				$(".tableAjax").append(data);
			}
		});
	});
}
И есть php файл с подключенным API MODX, который как раз и возвращает нам услуги:
/* include MODX_API BEGIN */
define('MODX_API_MODE', true);
require_once($_SERVER['DOCUMENT_ROOT'].'/index.php');
$modx=new modX();
$modx->initialize('web');
/* include MODX_API END */
$output = $modx->runSnippet('pdoPage',array(
							'class' => 'MainSeviceName',
							'tpl' => 'tpl.listServices',
							'element' => 'Getdb',
							'where' => '{"page":"'.$_POST['ID_serv'].'"}',
							'limit' => '5',
							'ajaxMode' => 'default',
							'sortby' => '{"id":"DESC"}'));
echo $output;
Если я добавляю параметр 'ajaxMode' => 'default', то после ajax запроса в ответе ничего не приходит, если я убираю этот параметр, то ответ приходит, но без пагинации. То есть просто услуги возвращаются.

Просмотрев документацию, нашел что можно отправлять странице get запрос таким вот образом:
$.get('document.html?page=5', function(response) {
    console.log(response);
}, 'json');
Но тут тогда проблема в другом тогда, грубо говоря если я сделаю вот так ведь у меня всё равно url никак не меняется, потому что ajax ведь, и всё происходит на одной странице. Я выбираю элемент выпадающего списка, затем отправляется ajax запрос, сервер ничего не отвечает т.к.'ajaxMode' => 'default', в функции success отправляется get запрос, и в консоли я собственно вижу всегда услуги «Топ стилиста» который по умолчанию вызван в ресурсе.
var SelectServicesShow = function() {
	$("#formServices").change(function() {
		var IDServices = $("#valServices").val();
		$.ajax({
			dataType: "HTML",
			type: "POST",
			url: "/assets/template/adm/db_main.php",
			data: {"ID_serv":IDServices},
			success: function(data) {
				$(".tableAjax").empty();
				$(".tableAjax").append(data);
                                $.get('adminpanels?page=1', function(response) {
                                    console.log(response);
                                }, 'json');
			}
		});
	});
}
Подскажите пожалуйста как сделать так что бы при вызове pdoPage с помощью ajax, возвращались и услуги и пагинация, выбранного раздела в выпадающем списке. Заранее благодарю за помощь.
Сергей Хлопов
22 июля 2018, 14:08
modx.pro
1 042
0

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

Володя
22 июля 2018, 15:53
0
И есть php файл с подключенным API MODX, который как раз и возвращает нам услуги:
Попробуй в нем добавить
$_SERVER['HTTP_X_REQUESTED_WITH'] = '';
перед вызовом pdoPage
    Сергей Хлопов
    22 июля 2018, 18:05
    0
    Благодарю Вас за ответ. Добавил, оно теперь услуги возвращает но пагинации нету.
    <?php
    /* include MODX_API BEGIN */
    define('MODX_API_MODE', true);
    require_once($_SERVER['DOCUMENT_ROOT'].'/index.php');
    $modx=new modX();
    $modx->initialize('web');
    /* include MODX_API END */
    $_SERVER['HTTP_X_REQUESTED_WITH'] = '';
    $output = $modx->runSnippet('pdoPage',array(
    							'class' => 'MainSeviceName',
    							'tpl' => 'tpl.listServices',
    							'element' => 'Getdb',
    							'where' => '{"page":"'.$_POST['ID_serv'].'"}',
    							'limit' => '1',
    							'ajaxMode' => 'default',
    							'sortby' => '{"id":"DESC"}'));
    echo $output;
      Володя
      23 июля 2018, 08:28
      0
      Скорее всего ваш сниппет Getdb не отдает общее кол-во элементов и pdoPage не выводит пагинацию.
      Самое простое в код Getdb добавить
      $modx->setPlaceholder('total', $total);
      где $total общее кол-во найденных элементов без учета limit
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    3