Аякс получение данных.

Здравствуйте. Встала задача не очень сложного аякс каталога, с которым возникли некоторые трудности… А именно: s7535.h7.modhost.pro
Суть в том что почему то при аякс запросе в чанках игнорируется почти все, кроме хтмл.
Казалось бы все должно быть просто, из формы отправляем запрос куда то (в примере выше запрос идет на ajax.php)
В php файлике идет запрос чанка, $modx->getChunk(), а в ответ приходит только html, теги не парсятся. Подскажите пожалуйста, где я налажал?
Николай
27 ноября 2016, 13:08
modx.pro
2
1 559
0

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

Николай
27 ноября 2016, 16:56
0
Теперь я вообще в тупике. Дело не в аяксе, если просто открыть
s7535.h7.modhost.pro/ajax.php

То точно так же никакие теги не распарсятся. Хотя api подключено, работать с modx я могу в скрипте…
    Дмитрий
    27 ноября 2016, 17:36
    3
    0
    Пример 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);
    }
      Марат Марабар
      27 ноября 2016, 17:37
      2
      +1
      Полученный чанк при 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;
      }
        Николай
        27 ноября 2016, 18:40
        0
        Конкретно эта функция (естественно с заменой $this на $modx) складывает скрипт с 500 ошибкой, но суть понял. Пойду гуглить информацию, спасибо.
          Константин Ильин
          28 ноября 2016, 13:13
          +3
          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, отрабатывает.
            Николай
            28 ноября 2016, 14:04
            0
            Это именно то что я все время забываю, спасибо.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      6