Как вызвать pdoPage с помощью ajax из своего файла php ?
На странице есть выпадающий списком а в нём три раздела- «Топ стилист», «Стилист», «Мастер универсал», для каждого разделе есть услуги, при выборе какого либо раздела должны выводиться соответствующие услуги по средствам 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, возвращались и услуги и пагинация, выбранного раздела в выпадающем списке. Заранее благодарю за помощь.Комментарии: 3
И есть php файл с подключенным API MODX, который как раз и возвращает нам услуги:Попробуй в нем добавить
$_SERVER['HTTP_X_REQUESTED_WITH'] = '';
перед вызовом pdoPage
Благодарю Вас за ответ. Добавил, оно теперь услуги возвращает но пагинации нету.
<?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;
Скорее всего ваш сниппет Getdb не отдает общее кол-во элементов и pdoPage не выводит пагинацию.
Самое простое в код Getdb добавить
Самое простое в код Getdb добавить
$modx->setPlaceholder('total', $total);
где $total общее кол-во найденных элементов без учета limit
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.