Как получить html через пост запрос на плагин?

Хочу получить html шаблона по клику допустим, сделал плагин поставил обработчик OnHandleRequest
Проверяю на пост и так далее, есть так же метод получения контента из шаблона, но как вернуть его? return не работает, echo и die() тоже, либо ошибка либо какой-то бред.

Контент получаю так
$retrivedObject->getContent();
— Контент правильный проверял.

Возвращаю ответ от функции выше так
return json_encode(array('status' => true, 'msg' => "Succesfuly retrieved data from '{$objectName}' with search params as '{$searchParams}'", 'result' => $result), JSON_UNESCAPED_UNICODE);
Где $result это просто список.
Vladimir
19 июля 2022, 14:16
modx.pro
655
0

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

Vladimir
19 июля 2022, 14:17
0
Джсом отправляю так
function makeAjaxCall(requestMethod, requestPath, requestBody) {
    var request = new XMLHttpRequest();
    request.open(requestMethod, requestPath);

	request.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
	request.setRequestHeader("X-Request-Type", "rapidLayout");
    request.send(requestBody);

    request.onload = function() {
        if (request.readyState == 4) {
            //the operation is done
            if (request.status == 200) {
            	log(request)
            	result = JSON.parse(request.responseText);
            	log(result);
                return result;
            } else if (request.status >= 400) {
                //client or server errors
                errCode = `Error Code: ${request.status}; Error Msg: ${request.statusText}`;
                log(errCode)
                alert(errCode);
            }

        }

    }

}
    Роман
    19 июля 2022, 14:22
    0
    Возможно не OnHandleRequest нужен.
      Vladimir
      19 июля 2022, 14:27
      0
      Подскажите какой
        Роман
        19 июля 2022, 14:44
        0
        Просто в документации написано:
        Output
        Все, что возвращается этим событием, будет записано в журналы как ошибка.
        Поэтому ничего не выводится.
        Скорее всего, что-то из этих, сложно сказать, не видя полной картины
        OnMODXInit
        OnLoadWebDocument
        OnPageNotFound
          Vladimir
          19 июля 2022, 14:52
          0
          Но ведь это странно и глупо, за счёт того что плагин по обработчику «OnHandleRequest» должен именно это и выполнять, мол человек сделал запрос, и допустим вывести вместо страницы то что в плагине, кокрас таки те обработчики что вы выше написали вообще не подходят.
          Суть простая я хочу отправить аякс запрос с XMLHttpRequest допустим, и получить ответ от плагина, в плагине моём всё работает если выводить в лог, но вернуть как ответ не получается
            Роман
            19 июля 2022, 15:18
            0
            Ну глупо и глупо. Вам виднее.
      Артур Шевченко
      19 июля 2022, 14:52
      +1
      <?php
      define('MODX_API_MODE', true);
      require_once dirname(dirname(__FILE__)) . '/index.php';
      
      $modx->getService('error', 'error.modError');
      $modx->setLogLevel(modX::LOG_LEVEL_ERROR);
      
      // Откликаться будет ТОЛЬКО на ajax запросы
      if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {
          return;
      }
      
      // Сниппет будет обрабатывать не один вид запросов, поэтому работать будем по запрашиваемому действию
      // Если в массиве POST нет действия - выход
      if (empty($_POST['action'])) {
          return;
      }
      
      // А если есть - работаем
      $res = '';
      
      $action = $_POST['action'];
      
      switch ($action) {
          case 'getCOntent':
          if((int)$_POST['rid']){
            // тут получаешь код шаблона
          }
             break;
      
            
      }
      
      // Если у нас есть, что отдать на запрос - отдаем и прерываем работу парсера MODX
      if (!empty($res)) {
          die($res);
      }
        Николай Савин
        19 июля 2022, 20:42
        0
        Насколько я понял вам нужно не return делать, а echo json; die;
        echo json_encode(array('status' => true, 'msg' => "Succesfuly retrieved data from '{$objectName}' with search params as '{$searchParams}'", 'result' => $result), JSON_UNESCAPED_UNICODE);
        die;
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          8