@fillpower

Как обрабатывать formData на сервере PHP?

Добрый день, подскажите пожалуйста. делаю отправку формы с помощью AJAX и обрабатываю на сервере с помощью PHPMailer, но почему-то при отправке формы на почту приходят пустые данные с формы.
Код с JS
let message = {
    loading: 'Загрузка...',
    success: 'Спасибо! Скоро мы с Вами свяжемся!',
    failure: 'Что-то пошло не так...'
};
let forms = document.querySelectorAll('form'),
    statusMessage = document.createElement('div');

    statusMessage.classList.add('status');

forms.forEach(item => {
    let inputs = item.getElementsByTagName('input');

    item.addEventListener('submit', function(event) {
        event.preventDefault();
        item.appendChild(statusMessage);

        let request = new XMLHttpRequest();
        request.open('POST', 'smart.php');
        request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        let formData = new FormData(item);
        request.send(formData);
        
        request.addEventListener('readystatechange', function() {
            if (request.readyState < 4) {
                statusMessage.innerHTML = message.loading;
            } else if (request.readyState === 4 && request.status === 200) {
                statusMessage.innerHTML = message.success;
            } else statusMessage.innerHTML = message.failure;
        });

        for (let i = 0; i < inputs.length; i++) {
            inputs[i].value = '';
        }
    });
});


Код с PHPmailer
$mail->Body    = '
	Пользователь оставил свои данные для связи <br> 
	Имя: ' . $_POST['userName'] . ' <br>
	Телефон: ' . $_POST['userPhone'] . ' <br>
	Почта: ' .$_POST['userEmail'];

5d0e086195a90324414168.png
  • Вопрос задан
  • 4170 просмотров
Решения вопроса 1
SagePtr
@SagePtr
Еда - это святое
Потому что заголовок устанавливаете
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
А данные отправляете в другом формате - multipart/form-data
И как по-вашему PHP должен обрабатывать пользовательский ввод, в котором содержимое не соответствует заявленному в заголовке типу?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
summer Ярославль
от 100 000 до 140 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
19 апр. 2024, в 23:00
5000 руб./за проект
19 апр. 2024, в 20:43
20000 руб./за проект