Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

ajax форма обратной связи в модальном окне

16.08.2015, 16:08
Roman
Infoservis

Зарегистрирован:
2006-06-01
Сообщений: 31

Добрый день

сделал форму обратной связи в модальном окне на fancybox, обработка через аякс
вот здесь - http://www.saturngk.ru/prod/ в конце страницы

но работает как то глючно, значение переменных на обработчик не передаёт (приходят пустые письма, если вручную в обработчике присваиваешь значения, то они приходят в писме норм.), обработчик срабатывает 2 раза, форма зависает, не закрывается по крестику

Подскажите пожалуйста, где накосячил.

вот код формы что-то не смог сюда вставить, см здесь- http://www.saturngk.ru/prod/ в конце страницы

Скрипт script.js
Код:

$(function() {
$('#popupbutton').fancybox({
'padding': 37,
'overlayOpacity': 0.87,
'overlayColor': '#fff',
'transitionIn': 'none',
'transitionOut': 'none',
'titlePosition': 'inside',
'centerOnScroll': true,
'maxWidth': 400,
'minHeight': 310

});
$("#form-feedback").submit(function(event) {
if ($('#name').val() == "")
{
$('#bthrow_error_name').fadeIn(1000).html('Представьтесь, пожалуйста.');
}
else if ($('#phone').val() == "")
{
$('#bthrow_error_name').empty();
$('#bthrow_error_phone').fadeIn(1000).html('Как с Вами связаться?');
}
else
{
var name = $('#name').val();
var phone = $('#phone').val();

$.post(
"/feedback/ajax/",
{
name: name,
phone: phone,

},
onAjaxSuccess
);
}

event.preventDefault();

});

function onAjaxSuccess(data) {
$('#form-feedback').html('<p>' + data + '</p>');
}
});



код обработчика, обработчик в function.inc.php, подключается в отдельном разделе /feedback/ajax/ , с отдельным макетом дизайна. в макете в шаблоне вывода навигации - ajax_back();


Версия Неткат 5.4
Код:

function ajax_back() {

$name=$_POST['name'];
$phone=$_POST['phone'];
$text1="сообщение";

$message = $name." <br /> ".$phone." <br /> ".$text1;

$mailer = new CMIMEMail();
$mailer->mailbody( strip_tags($message), $message);

// админу
$admin_to = "bur75@inbox.ru";
$admin_from = "stel@saturngk.ru";
$admin_reply = "stel@saturngk.ru";
$admin_from_name = $name;
$subject="письмо с сайта";
$mailer->send($admin_to, $admin_from, $admin_reply, $subject, $admin_from_name);

$form_data = 'Мы свяжемся с Вами в течение 12 часов';

echo $form_data;}

17.08.2015, 11:52
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 1037

Накосячили с неправильным подходом.
Сперва у вас форма должна отправляться без аякса. В этом случае все будет работать сразу без лишней головной боли.
Страшный у вас код.

1 шаг. Настройте форму на отправку без аякса. Обычно это вставить как есть
После завершения продолжите.
2 шаг.
Подключите jquery.form.js
Вместо $.post(...) используйте $('#form-feedback').ajaxSubmit()

Бить палками вас нужно за то что свои обработчики пишите. В битрикс переиграли?

Для всего этого есть компоненты и действия после добавления.
Элементарно с компонентами. Создали, генерировали код, подправили где надо, разрешили добавлять всем (в настройках инфоблока), вставили при помощи nc_objects_list() куда вам нужно. Подключили модуль "почтовых уведомлений" или настроили собственную отправку в действиях после добавления.

Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
18.08.2015, 06:57
Roman
Infoservis

Зарегистрирован:
2006-06-01
Сообщений: 31

благодарю за науку
198 196 2015-08-18 06:57:36 14257
Описание проекта