sw0rl0k
@sw0rl0k

Почему PHP не обрабатывает данные отправленные AJAX'ом?

Есть у меня страница с формой обратной связи и таким вот кодом:
<html>
...
<body>
...
<div class="form">
      <label>Имя:</label>
      <input id="name">
      <label>Телефон:</label>
      <input id="phone">
      <label>Комментарий:</label>
      <textarea id="message"></textarea>
      <input id="submit" type="button" value="Отправить">
</div>
...
</body>
<script>
    document.querySelector('input[type="button"]').onclick = function ()
    {
      var hxr = new XMLHttpRequest ();
      hxr.open ('post', 'mail.php', true);
      hxr.onreadystatechange = function ()
      {
        if (hxr.readyState < 4) return;
        var s = document.createElement ('script');
        s.text= hxr.responseText;
        document.body.appendChild (s);
      }
      var nameVal = document.getElementById ('name').value;
      var phoneVal = document.getElementById ('phone').value;
      var messageVal = document.getElementById ('message').value;
      hxr.send ('name=' + nameVal + '&phone=' + phoneVal + '&message=' + messageVal);
    }
</script>
...
</html>


И, в той же директории лежит файл mail.php со следующим кодом:
<?php
$name = $_POST['name'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$from = 'Обратная связь';
$to = 'mail@mail.ru'; 
$subject = 'Обратный звонок';

$body = "Имя: $name\nТелефон: $phone\nКомментарий:\n$message";

if (mail ($to, $subject, $body, $from)) {
  echo "alert ('Ваша заявка принята! Ожидайте звонка!');";}
else {
  echo "alert ('Что-то пошло не так, повторите попытку еще раз!');";}
?>


И вот, при нажатии кнопки "Отправить" вылазит алерт 'Ваша заявка принята! Ожидайте звонка!' и на почту падает письмо. Только вот в самом письме нету данных из инпутов. Сначала думал, что это js кривой, но посмотрел в мониторе сети браузера, что при нажатии кнопки в файл mail.php отправляется post с данными 'name=nameVal&phone=phoneVal&message=messageVal с правильными данными из форм. То есть, именно mail.php эти данные не обрабатывает. Может кто-нибудь подсказать почему? Спасибо.
  • Вопрос задан
  • 198 просмотров
Решения вопроса 1
@hoarywolf
добавьте
hxr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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