Проблемы с AjaxForm.
Буду рад помощи.
Организовываю отправку форм на почту на MODX. И решил воспользоваться FormIt в связке с AjaxForm. Проблема в следующем. FormIt отправляет на раз, AjaxForm — не отправляет совсем.
Вот вызов ajax
Сначала AjaxForm совсем не работал, по ошибкам в консоли я понял, что версия JQuery
не подходит, понизил версию с 3.1 до 1.7 и о чудо, ошибки в консоле пропали и стали появляться всплывающие сообщения. Однако почта не приходит, даже если сообщение утверждает, что все отлично.
В спаме нет, хостинг не блокирует, ведь с Formit прилетают, да и просто через PHP тоже отлично приходит.
Замечу, что вызов Ajax Form происходит внутри модального окна FancyBox, возможно тут есть какие-то подводные камни…
В общем буду рад если покажите, в каком именно месте я туплю.
Спасибо.
PS. Решил добавить еще один вопрос, все равно он зреет)
Подскажите пожалуйста, как получить контроль над сообщениями успеха или ошибок от AjaxForm?
Я понимаю, что текст их выводится в плейсхолдеры и ими можно воспользоваться как хочешь, но не получается. К примеру взять текст из них и вывести в модальном окне вместо формы. Из чанка, в котором находится форма я совсем убрал их.
Но это ладно, это можно победить покопавшись в скрипте компонента. А вот почему не получается просто вывести текст [[+fi.successMessage]] внутри формы… Что у меня работает неправильно, кроме головы ?)
Организовываю отправку форм на почту на MODX. И решил воспользоваться FormIt в связке с AjaxForm. Проблема в следующем. FormIt отправляет на раз, AjaxForm — не отправляет совсем.
Вот вызов ajax
[[!AjaxForm?
&snippet=`FormIt`
&hooks=`email`
&emailFrom=`noreply@mail.ru`
&form=`tpl.AjaxForm`
&emailTpl=`email_tpl`
&emailTo=`robota.melnik@yandex.ru`
&emailSubject=`Заказ звонка с сайта`
&validate=`name:required`
&validationErrorMessage=`Пожалуйста, заполните поля помеченные *`
&successMessage=`Сообщение успешно отправлено`
]]
Сама форма tpl.AjaxForm<form action="[[~[[*id]]]]" method="post" class="form">
<input type="text" name="name" id="name"/>
<button name="submit" class="form_btn">ПЕРЕЗВОНИТЕ МНЕ</button>
</form>
Шаблон письма email_tpl<p>От кого: [[+name]]</p>
Все упрощено чтобы понять в чем ошибка.Сначала AjaxForm совсем не работал, по ошибкам в консоли я понял, что версия JQuery
не подходит, понизил версию с 3.1 до 1.7 и о чудо, ошибки в консоле пропали и стали появляться всплывающие сообщения. Однако почта не приходит, даже если сообщение утверждает, что все отлично.
В спаме нет, хостинг не блокирует, ведь с Formit прилетают, да и просто через PHP тоже отлично приходит.
Замечу, что вызов Ajax Form происходит внутри модального окна FancyBox, возможно тут есть какие-то подводные камни…
В общем буду рад если покажите, в каком именно месте я туплю.
Спасибо.
PS. Решил добавить еще один вопрос, все равно он зреет)
Подскажите пожалуйста, как получить контроль над сообщениями успеха или ошибок от AjaxForm?
Я понимаю, что текст их выводится в плейсхолдеры и ими можно воспользоваться как хочешь, но не получается. К примеру взять текст из них и вывести в модальном окне вместо формы. Из чанка, в котором находится форма я совсем убрал их.
[[+fi.success:is=`1`:then=`
<div class="alert alert-success">[[+fi.successMessage]]</div>
`]]
Оставил только голую форму, однако сообщения упорно всплывают. Но это ладно, это можно победить покопавшись в скрипте компонента. А вот почему не получается просто вывести текст [[+fi.successMessage]] внутри формы… Что у меня работает неправильно, кроме головы ?)
Комментарии: 8
попробуйте добавить для формы класс ajax_form
Спасибо, но не помогло.
Вызов ajax
Форма tpl.AjaxForm
Шаблон письма email_tpl
А еще можно добавить в вызов ajax, чтобы письма сохранялись в бекенде.
[[!AjaxForm?
&snippet=`FormIt`
&hooks=`spam,email`
&emailFrom=`noreply@mail.ru`
&form=`tpl.AjaxForm`
&emailTpl=`email_tpl`
&emailTo=`robota.melnik@yandex.ru`
&emailSubject=`Заказ звонка с сайта`
&validate=`name:required`
&validationErrorMessage=`Пожалуйста, заполните поля помеченные *`
&successMessage=`Сообщение успешно отправлено`
]]
Форма tpl.AjaxForm
<form action="#" method="post" class="form ajax_form">
<input type="text" name="name" id="name"/>
<button type="submit" class="form_btn">ПЕРЕЗВОНИТЕ МНЕ</button>
</form>
Шаблон письма email_tpl
<h3>[[+emailSubject]]</h3>
<p>От кого: [[+name]]</p>
А еще можно добавить в вызов ajax, чтобы письма сохранялись в бекенде.
&hooks=`spam,email,FormItSaveForm`
&formName=`Заказ звонка с сайта`
&formFields=`name`
&fieldNames=`name==От кого`
Андрей, например у меня сделано по такому же принципу, как вы написали, но форма не отправляет письма на email. Второй день уже затык с этой формой. Есть еще какие-нибудь мысли почему не работает?
Всё, народ, я нашёл свою ошибку: я не указывал &emailFrom=`forma@domen.ru`, причем домен должен быть указан именно тот, на котором стоит MODx, иначе не приходят письма (вариант mail@mail.ru не прокатит).
Странно, но мне даже указание реального домена в почте не помогло.
Глухо совершенно, при том что просто FormIt с теми же настройками доставляет в секунду.
Глухо совершенно, при том что просто FormIt с теми же настройками доставляет в секунду.
Александр, попробуйте сделать вызов отдельно от fancybox, вдруг дело в нем.
Дружище!!! Огромное тебе спасибо!!! Блин я два дня ковырял весь Modx пытаясь понять в чем подвох… Добавил строку и все заработало!
Я даже зарегился специально чтобы тебя поблагодарить!!!
Я даже зарегился специально чтобы тебя поблагодарить!!!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.