Answer the question
In order to leave comments, you need to log in
Why is the data not being submitted from the form?
Hello.
Letters from the form do not come to the mail, although I receive the message 200 OK.
In the response header I have Content-Length: 0, maybe just no data is being transmitted?
The form:
<form action="post.php" method="POST" class="form" id="form" >
<h5>Форма обратной связи</h5>
<div class="form-group">
<div class="row">
<div class="col-lg-12">
<label for="name">Фамилия Имя Отчество:</label>
<input class="form-control form-control-lg" type="text" name="name" id="name" placeholder="Иванов Иван Иванович" required>
</div>
<!-- .col-lg-12 -->
</div>
<!-- .row -->
<div class="row">
<div class="col-lg-12">
<label for="email">Адрес электронной почты:</label>
<input class="form-control form-control-lg" type="email" name="email" id="email" placeholder="[email protected]" required>
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
<div class="row">
<div class="col-lg-12">
<label for="text">Текст сообщения:</label>
<textarea class="form-control" name="text" id="text" resize="none" cols="3" rows="5" placeholder="Введите текст сообщения" required></textarea> <!-- /#text --></div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
<div class="row">
<div class="col-lg-12">
<input type="submit" class="btn btn-primary" value="Отправить сообщение"></div>
</div>
</div>
<!-- .form-group -->
</form>
<!-- /.form -->
$("#form").submit(function (e) { // Устанавливаем событие отправки для формы с id=form
e.preventDefault();
var form_data = $(this).serialize(); // Собираем все данные из формы
$.ajax({
type: "POST", // Метод отправки
url: "post.php", // Путь до php файла отправителя
contentType: false,
data: form_data,
success: function () {
// Код в этом блоке выполняется при успешной отправке сообщения
alert("Ваше сообщение отправлено!");
}
});
});
$to = "Адрес емайла";
$subject = 'Письмо с сайта'; //Заголовок сообщения
$message = '
<html>
<head>
<title>'.$subject.'</title>
</head>
<body>
<p>Имя: '.$_POST['name'].'</p>
<p>Email: '.$_POST['email'].'</p>
<p>Сообщение: '.$_POST['text'].'</p>
</body>
</html>'; //Текст сообщения
$headers = "Content-type: text/html; charset=utf-8 \r\n"; //Кодировка письма
$headers .= "From: Отправитель <[email protected]>\r\n"; //Наименование и почта отправителя
mail($to, $subject, $message, $headers); //Отправка письма с помощью функции mail
Answer the question
In order to leave comments, you need to log in
Everything turned out to be easier than ever.
We need to remove the method from the form, since it is in the AJAX request. After that, letters with data from the form began to arrive.
Emil Thank you very much, your method helped, but the data was not transmitted.
Changed back, it began to work like clockwork.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question