Проблемы с 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 пытаясь понять в чем подвох… Добавил строку и все заработало!
Я даже зарегился специально чтобы тебя поблагодарить!!!
                    Я даже зарегился специально чтобы тебя поблагодарить!!!
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.