Аякс получение данных.
        Здравствуйте. Встала задача не очень сложного аякс каталога, с которым возникли некоторые трудности… А именно: s7535.h7.modhost.pro
Суть в том что почему то при аякс запросе в чанках игнорируется почти все, кроме хтмл.
Казалось бы все должно быть просто, из формы отправляем запрос куда то (в примере выше запрос идет на ajax.php)
В php файлике идет запрос чанка, $modx->getChunk(), а в ответ приходит только html, теги не парсятся. Подскажите пожалуйста, где я налажал?
    
    
                                                                                
            Суть в том что почему то при аякс запросе в чанках игнорируется почти все, кроме хтмл.
Казалось бы все должно быть просто, из формы отправляем запрос куда то (в примере выше запрос идет на ajax.php)
В php файлике идет запрос чанка, $modx->getChunk(), а в ответ приходит только html, теги не парсятся. Подскажите пожалуйста, где я налажал?
Комментарии: 6
                Теперь я вообще в тупике. Дело не в аяксе, если просто открыть 
s7535.h7.modhost.pro/ajax.php
То точно так же никакие теги не распарсятся. Хотя api подключено, работать с modx я могу в скрипте…
                    s7535.h7.modhost.pro/ajax.php
То точно так же никакие теги не распарсятся. Хотя api подключено, работать с modx я могу в скрипте…
                Пример ajax.php, который использую в последних проектах. 
Работает исправно, все парсится и работает.
                    Работает исправно, все парсится и работает.
<?php
define('MODX_API_MODE', true);
require 'index.php';
//подключаем pdoTools
$pdo = $modx->getService('pdoTools');
// Откликаться будет ТОЛЬКО на ajax запросы
if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {
    return;
}
// Сниппет будет обрабатывать не один вид запросов, поэтому работать будем по запрашиваемому действию
// Если в массиве POST нет действия - выход
if (!empty($_POST['action'])) {
    switch ($_POST['action']) {
        case 'snippetName':
            $tvs = $_POST['tvs'];
            if (!empty($tvs)) {
                $res = $pdo->runSnippet('@FILE snippets/snippetName.php', array('tvs' => $tvs));
            }
            if (empty($res)) {
                $res = 'Подходящих записей не найдено. Попробуйте упростить параметры поиска';
            }
            break;
    }
} else {
    return;
}
if (!empty($res)) {
    die($res);
}            
                Полученный чанк при ajax-запросе нужно распарсить, допустим в своём классе это можно сделать так:
                    private function getParserTag($content)
{
    $maxIterations = (integer) $this->modx->getOption('parser_max_iterations', null, 10);
    $this->modx->getParser()->processElementTags('', $content, false, false, '[[', ']]', array(), $maxIterations);
    $this->modx->getParser()->processElementTags('', $content, true, true, '[[', ']]', array(), $maxIterations);
        
    return $content;
}            
                Конкретно эта функция (естественно с заменой $this на $modx) складывает скрипт с 500 ошибкой, но суть понял. Пойду гуглить информацию, спасибо.            
                    global modx;в функции прописали?Должно быть так:
// Подключаем
require_once 'config.core.php';
require_once MODX_CORE_PATH.'model/modx/modx.class.php';
$modx = new modX();
$modx->initialize('web');
$modx->getService('error','error.modError', '', '');
 function getParserTag($content)
{
    global $modx;
    $maxIterations = (integer) $modx->getOption('parser_max_iterations', null, 10);
    $modx->getParser()->processElementTags('', $content, false, false, '[[', ']]', array(), $maxIterations);
    $modx->getParser()->processElementTags('', $content, true, true, '[[', ']]', array(), $maxIterations);
        
    return $content;
}
$tpl = $modx->getChunk("head");
echo getParserTag($tpl);У меня замечательно работает, и сниппет внутри чанка head, отрабатывает.            
                Это именно то что я все время забываю, спасибо.            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.