Двойная отправка сообщений
Добрый день, помогите найти проблему, пожалуйста. Добавил аяксовый скрипт, который формирует всплывающее окно и после очищает форму.
$(".fofm").submit(function() { var str = $(this).serialize(); $.ajax({ type: "POST", url: "contact.php", data: str, success: function(msg) { if(msg == 'ok') { $('.contwindow').html('<p>Спасибо за ваше обращение!</p><br><p>Наше специалист свяжется с вами в ближайшее время</p>'); $('.contwindowhide').fadeIn(400).delay(2000).fadeO ut(400); jQuery(".fofm").trigger("reset"); $.arcticmodal('close'); } else { /* $('.contwindow_error').html('<p>Письмо не отправленно, проверьте заполненость полей.</p>'); $('.popup2, .overlay').css('opacity','1'); $('.popup2, .overlay').css('visibility','visible'); $('.contwindowhide').css({'opacity':'1','visibilit y':'visible'}); */ } } }); return false; }); После добавления этого скрипта все работает, но письмо на почту приходит 2 раза. В чем может быть дело? |
Даже вот так укоротить код если
$(".fofm").submit(function() { var str = $(this).serialize(); $.ajax({ type: "POST", url: "contact.php", data: str, success: function(msg) { $('.contwindow').html('<p>Спасибо за ваше обращение!</p><br><p>Наше специалист свяжется с вами в ближайшее время</p>'); $('.contwindowhide').fadeIn(400).delay(2000).fadeO ut(400); jQuery(".fofm").trigger("reset"); $.arcticmodal('close'); } }); return false; }); |
$(".fofm").submit(function(e) {
e.preventDefault(); $.ajax({ type: "POST", url: "contact.php", data: $(this).serialize(), ....... |
Все равно приходит 2 раза
$(".fofm").submit(function(e) { e.preventDefault(); $.ajax({ type: "POST", url: "contact.php", data: $(this).serialize(), success: function(msg) { $('.contwindow').html('<p>Спасибо за ваше обращение!</p><br><p>Наше специалист свяжется с вами в ближайшее время</p>'); $('.contwindowhide').fadeIn(400).delay(2000).fadeO ut(400); jQuery(".fofm").trigger("reset"); $.arcticmodal('close'); } }); return false; }); |
Вот сама форма
<?php //проверяем значения полученые при проверке скриптом формы if (trim($_POST['valTrFal'])!='valTrFal_true') { echo 'fasle'; } else { $txtname = trim($_POST['txtname']); $txtNameValue = trim($_POST['name_class_value']); $txtemail = trim($_POST['txtemail']); $txtphone = trim($_POST['txtphone']); $txtmessage = trim($_POST['txtmessage']); // от кого $fromMail = 'digrandcom@gmail.com'; $fromName = 'Ремонт-сервис'; // Сюда введите Ваш email $emailTo = 'Vladislav306907@yandex.ru'; $subject = 'Форма обратной связи'; $subject = '=?utf-8?b?'. base64_encode($subject) .'?='; $headers = "Content-type: text/plain; charset=\"utf-8\"\r\n"; $headers .= "From: ". $fromName ." <". $fromMail ."> \r\n"; // тело письма $body = "Письмо с сайта \n\nИмя: $txtname\nТелефон: $txtphone\ne-mail: $txtemail \nСообщение: $txtmessage"; $mail = mail($emailTo, $subject, $body, $headers, '-f'. $fromMail ); echo 'ok'; } ?> |
Без e.preventDefault() будет происходить обычная отправка формы, и не факт что при этом еще и $.ajax отправит.
Открывайте отладчик, смотрите что отправляется на сервер - если по onsubmit формы будет два запроса сервера, значит нужно проверить js-код, вплоть до того как инициализируется отправка, баг в нем. Если же запрос один, то баг в серверном скрипте. |
Это что if (trim($_POST['valTrFal'])!='valTrFal_true') за хрень?
|
От предыдущего кодера осталось, я за ним правлю сижу
|
Удалил эту часть, не нужна она
|
http://prntscr.com/af1iff - 2 запроса, в коде не вижу косяка я
|
Часовой пояс GMT +3, время: 00:33. |