Ajax пагинация - отлов ошибок

Добрый вечер!
Столкнулся с такой проблемой: не работает Ajax пагинация по кнопке. После нажатия на кнопку #pdopage приобретает свойство полупрозрачности и на этом все. В консоли видно что отправляется Get запрос, но ни ответа ни привета. Собственно вопрос, как понять в чем проблема?

Данный каллбек ничего не возвращает:
pdoPage.callbacks['after'] = function(config, response) {
    console.log('Конфиг после загрузки!', config);
    console.log('Ответ от сервера!', response);
}
Вызов сниппета:
<div id="pdopage">
    <div class="rows">
        [[!pdoPage?
            &element=`vip_pdo`
            &context=`[[*context_key]]`
            &action=`buy`
            &item_type=`all`
            &status_filter=`offline_too`
            &limit=`4`
            &my_lang=`[[!user_lang]]`
            &ajaxMode=`button`
            &pageVarKey=`page`
            &ajaxTplMore=`@INLINE <button class="btn btn-default btn-more glyphicon glyphicon-refresh"></button>`
        ]]
    </div>
    <div class="hide">[[!+page.nav]]</div>
</div>
Дмитрий
21 сентября 2015, 16:52
modx.pro
1 833
0

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

Дмитрий
21 сентября 2015, 20:54
0
Вероятно, дело в параметрах:
&context=`[[*context_key]]`
            &action=`buy`
            &item_type=`all`
            &status_filter=`offline_too`
            &my_lang=`[[!user_lang]]`
Которые не указываются во встроенном запросе.
Каким образом можно передать дополнительные параметры в Get запросе?
    Пётр Молчанов
    22 сентября 2015, 11:19
    0
    как вариант, в &where=`` в виде json-строки, которую в последствии распарсивать в своём сниппете
      Дмитрий
      22 сентября 2015, 18:15
      0
      Попробовал. Данные в сниппет передаются. Однако при Ajax — запросе, параметр where не учитывается, увы.
      Параметры:
      assetsUrl: "/assets/components/pdotools/"
      link: "#pdopage .pagination a"
      mode: "button"
      more: "#pdopage .btn-more"
      moreTpl: "<button class="btn btn-default btn-more glyphicon glyphicon-refresh"></button>"
      pageLimit: 4
      pageVarKey: "page"
      pagination: "#pdopage .pagination"
      rows: "#pdopage .rows"
      wrapper: "#pdopage"
        Пётр Молчанов
        22 сентября 2015, 18:34
        0
        аа, ну да. я свои параметры добавлял сам. у мя на странице 2 чекбокса и один текстовый инпут.
        может мой код поможет:
        $(document).ready(function(){
            $('.filters input').on('change keypress paste', function() {
                var service = '';
                if($('.filters .service_foto:checked').length == 1 && $('.filters .service_design:checked').length)
                    service = 'all';
                else if($('.filters .service_foto:checked').length == 1)
                    service = 'service_foto';
                else if($('.filters .service_design:checked').length == 1)
                    service = 'service_design';
                
                var city = $('.filters .city').val();
                
                $.ajax({
                    type: "POST",
                    data: "city="+city+"&service="+service,
                    url: "[[~1539? &scheme=`full`]]",
                    beforeSend: function() {
                        $('#pdopage').html('<div class="center" style="width:100px;padding:50px; 0"><i class="fa fa-refresh fa-spin fa-3x"></i></div>');
                    },
                    success: function(response) {
                        $('#pdopage').html(response);
                    }
                });
            });
        });
        $(document).on('as_complete', document, function(e,d) {
            $(document).on('click', '.pagination a', function(e) {
                e.preventDefault();
                var url = $(this).attr('href');
                
                var service = '';
                if($('.filters .service_foto:checked').length == 1 && $('.filters .service_design:checked').length)
                    service = 'all';
                else if($('.filters .service_foto:checked').length == 1)
                    service = 'service_foto';
                else if($('.filters .service_design:checked').length == 1)
                    service = 'service_design';
                
                var city = $('.filters .city').val();
                
                $.post(url, {as_action: d["key"], city: city, service: service}, function(response) {
            	    if (typeof response.output !== "undefined") {
            		    $('#pdopage').html(response.output);
                    }
                }, "json");
                return false;
            });
        });
        на странице по адресу [[~1539]] вызывается мой сниппет, где я формирую условия для вызова pdoPage (всякие select, join'ы, where, который складываются в массив options), а возвращает он это:
        $output = $modx->runSnippet('pdoPage',$options);
        echo $output.$modx->getPlaceholder('page.nav');
        единственный минус — не меняется тайтл и урл при пэйджинге, хз как побороть это) если кто подскажет — буду признателен
        Дмитрий
        22 сентября 2015, 18:17
        0
        По всей видимости, нужно дорабатывать frontendjs.
        Жаль, что в «assets/components/pdotools/js/pdopage.js» нет комментариев к коду.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5