Ajaxform получение переменных

Привет, подскажите пожалуйста, как можно получить какие-либо переменные через ajaxform, когда использую свой сниппет.

К примеру у меня есть в шаблоне:

[[!AjaxForm?
     &snippet=`mysnippet`
     &form=`myform`
]]
<div id='result'></div>
В сниппете mysnippet следующее:
if(isset($_POST['поле1']) && isset($_POST['поле2'])){
   // Не важно откуда берутся эти переменные
   $parametr1 = 'Текст параметра 1';
   $parametr2=  'Текст параметра 2';
    return $AjaxForm->success('Форма обработана');
}
Так вот нужно вернуть переменные (parametr1 и parametr2) и записать их в div id='result'

<div id='result'>Текст параметра 1 'Текст параметра 2 </div>
Павел
12 февраля 2016, 11:09
modx.pro
2
2 818
0

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

Воеводский Михаил
14 февраля 2016, 10:15
0
1. В сниппете в функции AjaxForm->success() вторым параметром передавай массив
2. Вешай JS обработчик на событие afComplete, в нем получишь переданный в п. 1 массив, можешь вставлять значения куда угодно.
    Павел
    14 февраля 2016, 13:33
    0
    А можно пример пожалуйста)
      Воеводский Михаил
      14 февраля 2016, 19:37
      +1
      1)
      $data = array('param1' => 'value1', 'param2' => 'value2');
      return $AjaxForm->success('Форма обработана', $data);
      2)
      $(document).on('af_complete', function(event, response) {
          var form = response.form;
          if (response.data !== undefined) $('#html_element').val(response.data.param1);
      });
        Павел
        15 февраля 2016, 17:57
        0
        Спасибо!
          nekto
          20 марта 2016, 16:59
          0
          А как сделать то же самое, но только использовать ajaxForm вместе с FormIt?
          Данный вариант не получается… Пишу в сниппете
          return $AjaxForm->success('Спасибо', $new->toArray());
          , но ни сообщение ни массив приходят, то есть response.data пустой
            Воеводский Михаил
            20 марта 2016, 17:30
            0
            Нужно смотреть в консоли браузера.
              nekto
              20 марта 2016, 23:26
              0
              Я пробовал, пустой массив…
              console.log(response.data), массив пустой. Пробовал точно также, как в вашем примере, не работает…
                Воеводский Михаил
                21 марта 2016, 00:24
                0
                Имею ввиду консоль в целом. А в частности — вкладку «Сеть». Что приходит от сервера?
                  nekto
                  22 марта 2016, 12:31
                  0
                  От сервера приходит
                  data: []
                  message: "Спасибо за отзыв!"
                  success: true
                  Массив пустой, хотя если отправить в лог данные, то все правильно
                  $xpdo->log(xPDO::LOG_LEVEL_ERROR, $AjaxForm->success('Спасибо', $new->toArray()));
                  то есть в data есть данные нужны. Бьюсь который день, не получает…
                    Андрей
                    15 декабря 2017, 23:54
                    0
                    Добрый день. Столкнулся с такой же проблемой. data всегда пустой. Вы как-то решили проблему?
                nekto
                20 марта 2016, 23:27
                0
                И ошибок нет в консоле
              Павел
              20 марта 2016, 23:39
              0
              А подскажи пожалуйста, как лучше запускать сниппет, по данным, которые я получаю из ajaxform, в событии af_complete, например, получил переменную 5 и запустил pdoresources c parrent =5, к примеру через runsnippet
                Воеводский Михаил
                21 марта 2016, 00:26
                0
                В сниппете доступен массив $scriptProperties['fields'] — элементами в нем являются поля формы.
                af_comlpte из другой оперы. Это событие появляется в JS в момент получения результата обработки формы от сервера.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          13