Задать вопрос

Почему данные не передаются из формы, например $_POST['name']?

Отправляю сообщение из формы обратной связи на почту. Само письмо доходит, но без введенных данных.

Вот html:
<form id="feedback">
	<input type="text" name="name" placeholder="Ваше имя" required="required">
	<input type="text" name="email" placeholder="Укажите ваш E-Mail" required="required">
	<textarea name="text" placeholder="Введите сообщение" required="required"></textarea>
	<button name="feedback_submit">Отправить</button>
</form>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
	var feedback_form = document.getElementById('feedback');
	var feedback_submit = document.querySelector('button[name="feedback_submit"]');

  $(document).ready(function () {
    $("button[name='feedback_submit']").click(function (e) { // Устанавливаем событие отправки для формы с id=form
      feedback_submit.innerHTML = 'Отправляю...';
      e.preventDefault();
      var form_data = $(this).serialize(); // Собираем все данные из формы
      $.ajax({
        type: "POST", // Метод отправки
        url: "send.php", // Путь до php файла отправителя
        data: form_data,
        success: function () {
          feedback_submit.innerHTML = 'Сообщение отправлено!';
        }
      });
    });
  });

</script>


вот send.php
<?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 = 'From: Support Team <support@server.com>' . "\r\n" .
    'Reply-To: support@server.com' . "\r\n" .
    'MIME-Version: 1.0' . "\r\n" .
    'Content-Type: text/html; charset=utf-8' . "\r\n" .
    'Content-Transfer-Encoding: quoted-printable';

  mail($to, $subject, $message, $headers); //Отправка письма с помощью функции mail

?>
  • Вопрос задан
  • 98 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@DanKud
Вы пытаетесь сериализовать this но в текущем контексте this это кнопка, по которой происходит клик. Сериализовывать нужно поля из формы - var form_data = $('#feedback').serialize();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Daniel_T
@Daniel_T
HTML-верстальщик
Вот рабочий вариант

$('#form_sendMail').on("click", function () {
	var name = $('#form_name').val();
	var email = $('#form_email').val();
	var number = $('#form_number').val();
	var message = $('#form_message').val();

	$.ajax({
		url: 'ajax/mail.php',
		type: 'POST',
		cache: false,
		data: { 'name': name, 'email': email, 'number': number, 'message': message },
		dataType: 'html',
                beforeSend: function() {
			$('#form_sendMail').prop("disabled", true);
		},
		success: function(data) {
			if (!data)
				alert("При отправке возникли ошибки, попробуйте позже.");
			else
				$('#mainForm').trigger("reset");
			$('#form_sendMail').prop("disabled", false);
		}
	})
})
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы