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>
Комментарии: 13
1. В сниппете в функции AjaxForm->success() вторым параметром передавай массив
2. Вешай JS обработчик на событие afComplete, в нем получишь переданный в п. 1 массив, можешь вставлять значения куда угодно.
2. Вешай JS обработчик на событие afComplete, в нем получишь переданный в п. 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);
});
Спасибо!
А как сделать то же самое, но только использовать ajaxForm вместе с FormIt?
Данный вариант не получается… Пишу в сниппете
Данный вариант не получается… Пишу в сниппете
return $AjaxForm->success('Спасибо', $new->toArray());
, но ни сообщение ни массив приходят, то есть response.data пустой
Нужно смотреть в консоли браузера.
Я пробовал, пустой массив…
console.log(response.data), массив пустой. Пробовал точно также, как в вашем примере, не работает…
console.log(response.data), массив пустой. Пробовал точно также, как в вашем примере, не работает…
Имею ввиду консоль в целом. А в частности — вкладку «Сеть». Что приходит от сервера?
От сервера приходит
data: []
message: "Спасибо за отзыв!"
success: true
Массив пустой, хотя если отправить в лог данные, то все правильно$xpdo->log(xPDO::LOG_LEVEL_ERROR, $AjaxForm->success('Спасибо', $new->toArray()));
то есть в data есть данные нужны. Бьюсь который день, не получает…
Добрый день. Столкнулся с такой же проблемой. data всегда пустой. Вы как-то решили проблему?
И ошибок нет в консоле
А подскажи пожалуйста, как лучше запускать сниппет, по данным, которые я получаю из ajaxform, в событии af_complete, например, получил переменную 5 и запустил pdoresources c parrent =5, к примеру через runsnippet
В сниппете доступен массив $scriptProperties['fields'] — элементами в нем являются поля формы.
af_comlpte из другой оперы. Это событие появляется в JS в момент получения результата обработки формы от сервера.
af_comlpte из другой оперы. Это событие появляется в JS в момент получения результата обработки формы от сервера.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.