@Egche
Ученье-свет.

Не пойму где теряю JSON при передаче на сервер, поищем вместе?

Передаю на сервер строку:
var msg = {},
                str;
            msg.name = name.value;
            msg.mail = mail.value;
            msg.phone = phone.value;
            msg.select = select;
            msg.comment = comment;

            str = JSON.stringify(msg);

            //msg = serialize(document.querySelector('form'));

            var xhr = new XMLHttpRequest();

            // 2. Конфигурируем его: POST-запрос на URL 'mail.php'
            xhr.open('POST', 'mail.php', true);

            xhr.addEventListener('load', function() {
                if (xhr.status != 200) {
                    // обработать ошибку
                    alert( xhr.status + ': ' + xhr.statusText ); // пример вывода: 404: Not Found
                } else {
                    document.querySelector('.form__content').style.display = 'none';
                    document.querySelector('.form-successful').style.display = 'block';
                }
            });

            xhr.send(str);
            console.log(str);


Получаю, декодирую и отправляю на почту:
$obj = json_decode($_POST, true);

    $to = "fio@mail.ru";
    $subject = "Заявка";
    $from = "info@giraffe-ra.ru";
    $headers = "From: $from";
    mail($to,$subject,$obj[name],$headers);
    echo "Mail Sent.";


Есть идеи почему в письме кроме заголовка ничего нет?
  • Вопрос задан
  • 275 просмотров
Решения вопроса 2
BuriK666
@BuriK666
Компьютерный псих
вместо $_POST используйте:
file_get_contents('php://input');

оффтоп картинка
0_c03f9_ada4c32a_orig.jpg
Ответ написан
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Если уж вы едите кактус переизобретаете велосипед, то делайте это правильно:
json_decode(file_get_contents('php://input'), true);


Ну а если хотите сделать нормально, то вам сюда.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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