|
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;}
|
|
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
|