Есть у меня страница с формой обратной связи и таким вот кодом:
<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 эти данные не обрабатывает. Может кто-нибудь подсказать почему? Спасибо.