A
A
Alexander Pavlov2020-05-04 00:51:24
AJAX
Alexander Pavlov, 2020-05-04 00:51:24

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


AJAX:
$("#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("Ваше сообщение отправлено!");
                }
            });
        });


PHP:
$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


Maybe my eye is already blurry or I'm missing something somewhere, tell me, please, what's the problem?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
Alexander Pavlov, 2020-05-04
@Sanchez9891

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.
5eafb5cd74fa0347211330.jpeg
Changed back, it began to work like clockwork.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question