Ajax форма отправляется 2 раза

SM
На сайте с 10.01.2016
Offline
14
3281

Подскажите пожалуйста, как исправить.

Письмо два раза приходит, а нужно что бы один раз.

И еще 1 вопрос - Если находишься на внутренней странице, то при вызове из хедера формы - она не открывается на текущей странице, а происходит редирект на главную.

Заранее спасибо всем откликнувшимся!

php:

<?php

if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
if (isset($_POST['formData'])) {$formData = $_POST['formData'];}

$to = "1233@1233"; /*Укажите адрес, га который должно приходить письмо*/
$sendfrom = "1323@1233"; /*Укажите адрес, с которого будет приходить письмо, можно не настоящий, нужно для формирования заголовка письма*/
$headers = "From: " . strip_tags($sendfrom) . "\r\n";
$headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;charset=utf-8 \r\n";
$subject = "$formData";
$message = "$formData<br> <b>Имя пославшего:</b> $name <br><b>Телефон:</b> $phone";
$send = mail ($to, $subject, $message, $headers);
if ($send == 'true')
{
echo '<center><p style="color: white;">Спасибо за отправку вашего сообщения!</p></center>';
}
else
{
echo '<center><p style="color: white;"><b>Ошибка. Сообщение не отправлено!</b></p></center>';
}
} else {
http_response_code(403);
echo "Попробуйте еще раз";
}
?>

JS:

$(document).ready(function () {

$("form").submit(function () {
// Получение ID формы
var formID = $(this).attr('id');
// Добавление решётки к имени ID
var formNm = $('#' + formID);
$.ajax({
type: "POST",
url: 'mail.php',
data: formNm.serialize(),
success: function (data) {
// Вывод текста результата отправки
$(formNm).html(data);
},
error: function (jqXHR, text, error) {
// Вывод текста ошибки отправки
$(formNm).html(error);
}
});
return false;
});
});

html формы:

			<a href="/#modal" style="font-size: 16px; color: #E76453;">Обратный звонок</a>

<div class="remodal" data-remodal-id="modal" role="dialog" aria-labelledby="modal1Title" aria-describedby="modal1Desc">
<div class="remodalBorder">
<button data-remodal-action="close" class="remodal-close" aria-label="Close"></button>
<form id="form">
<h2 id="modal1Title">Оставьте ваши контактные данные и наш консультант свяжется <br>с вами</h2>
<input type="text" class="putName" name="name" placeholder="Ваше ваше имя" required>
<input name="phone" type="tel" class="putPhone" placeholder="Введите номер телефона" required></br>
<input type="checkbox" id="politics" onclick="check();" value="" autocomplete="on" checked />
<p style="color: white;"Нажимая на кнопку "ПЕРЕЗВОНИТЕ МНЕ", я даю<a href="#"></a>согласие на обработку персональных данных.</p>
<input type="submit" name="submit" class="btn" value="ПЕРЕЗВОНИТЕ МНЕ">
<input type="hidden" name="formData" value="Запрос обратного звонка с сайта ">
</form>
<script>
function check() {
var submit = document.getElementsByName('submit')[0];
if (document.getElementById('politics').checked)
submit.disabled = '';
else
submit.disabled = 'disabled';
}
</script>
</div>
</div>


---------- Добавлено 28.11.2017 в 18:34 ----------

Почему то лишние знаки добавились в самое начало первого скрипта

($_SERVER***91;"REQUEST_METHOD"***93; == "POST") {

if (isset($_POST***91;'name'***93;)) {$name = $_POST***91;'name'***93;;}

if (isset($_POST***91;'phone'***93;)) {$phone = $_POST***91;'phone'***93;;}

if (isset($_POST***91;'formData'***93;)) {$formData = $_POST***91;'formData'***93;;}

S
На сайте с 30.09.2016
Offline
469
#1
S2pidsMan:
Почему то лишние знаки добавились в самое начало первого скрипта

Потому что на этом форуме квадратные скобки в коде пхп заменяются на хрень со звёздочками. Пользуйтесь соседней кнопкой (#) для вставки кода.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
NM
На сайте с 27.11.2017
Offline
0
#2

она по умолчанию так настроена или нет?

S
На сайте с 30.09.2016
Offline
469
#3
S2pidsMan:
Если находишься на внутренней странице, то при вызове из хедера формы - она не открывается на текущей странице, а происходит редирект на главную.

Вместо <a href="/#modal" напишите <a href="#modal"

Z0
На сайте с 03.09.2009
Offline
830
#4
Ajax форма отправляется 2 раза

А форма с id="form" на странице одна?

webiumpro
На сайте с 20.03.2017
Offline
39
#5
ziliboba0213:
А форма с id="form" на странице одна?

Могу ошибаться, но насколько я знаю, если бы там было две таких формы, то не срабатывала бы ни одна из них. Повторение id считается ошибкой

Копирование лендингов. Разработка на фреймворке сервисов. Создание сайтов (/ru/forum/994418)
Z0
На сайте с 03.09.2009
Offline
830
#6
webiumpro:
Могу ошибаться, но насколько я знаю, если бы там было две таких формы, то не срабатывала бы ни одна из них. Повторение id считается ошибкой

По аяксу обе сработали бы, вроде... Но точно не помню, так что спорить не буду :)

Проверил, первая только срабатывает. Вторая даже не пытается :)

webiumpro
На сайте с 20.03.2017
Offline
39
#7

ziliboba0213, глянул код внимательнее, там событие отправки формы идет без id, просто по тегу. А использование id вообще непонятно зачем сделано, ведь можно было сериализацию через $(this).serialize() сделать.

ТС, а письма с одинаковыми данными приходят? Или одно/оба пустые?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий