Проблема с ajax, как выполнить снипет через ajax.

Проблема с ajax, как выполнить снипет через ajax.

файл js:
$(document).ready(function() {
    $.ajax({
        url: '/data2.html',
        type: 'POST',
        dataType: 'html'
        
Документ data2 создан в корне ресурсов.
       
В modx revo отключено Содержимое-Типы содержимого .html (не хочу у страниц сайта иметь на конце .html)
Документ data2.html содержит сниппет.

Проблема что не работает так, но если включаю Содержимое-Типы содержимого .html, то скрипт выполняется
пробовал в документе data2 ставить seourl data2, data2.html, data2.php и ничего не помогает.

пробовал и так
$(document).ready(function() {
    $.ajax({
        url: '[[~26]]',
        type: 'POST',
        dataType: 'html'
        
    не помогло.
Игорь
10 октября 2023, 19:09
modx.pro
639
0

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

Артур Шевченко
10 октября 2023, 21:37
0
Устанавливаешь не ниже SendIt 1.0.4. Создаёшь пресет со своим сниппетом. Потом в JS делаешь так
document.addEventListener('si:init', (e) => {
    SendIt?.setComponentCookie('sitrusted', '1');
    SendIt?.Sending?.prepareSendParams(document, 'custom');
})
Код выше запустит твой сниппет сразу после загрузки скриптов SendIt, но ты можешь указать любое другое нужное тебе событие.
А чтобы получить ответ можно сделать так
document.addEventListener('si:send:after', (e) => {
    const {action, target, result, headers, Sending} = e.detail;
    console.log(result);
})
    Игорь
    25 октября 2023, 06:56
    0
    Решил частично проблему — просто у страницы поставил галочку «контейнер» и тогда страница из /page.html становится /page/
    можно ещё окончание / убрать редиректом через htacess
      Константин Ильин
      25 октября 2023, 10:26
      0
      JS запрос к request.php(куда хотите его кладите в нем подключение index путь правьте), можете этот запрос повесить на клик кнопки
      p = new URLSearchParams();
      //тут передаем какие то параметры
      p.set('action', 'runSnippet');
      p.set('blabla', '1212');
      
      fetch('/request.php', {
          method: 'POST',
          body: p
      })
      .then((response) => {
          return response.json();
      })
      .then(( r ) => {
          console.log( r);
         // тут получает ответ, делайте что угодно, например:
          document.querySelector('body').html(r.out);
      });
      PHP request.php
      if(empty($_POST['action'])){
          return;
      }
      
      define('MODX_API_MODE', true);
      require 'index.php';
      $pdo = $modx->getService('pdoTools');
      $resp = [
          'success' => 1
      ];
      switch ($_POST['action']){
          case 'runSnippet':
              $resp['out'] = $modx->runSnippet('snippetBla', [ 'parents' => 1111] );
              echo json_encode($resp);return;
          break;
      }
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        3