@testkeyc

Как добавить поля для отправки на почту?

Скажите, где я ошибся, что на почту приходит только 2 поля?
<?php

$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];

$to = "test@gmail.com";
$subject ='Отправлена заявка с сайта НАЗВАНИЕ_САЙТА';
$message = "Заявка была отправлена пользоваталем $name с имейлом $email и телефон $phone";
$headers = "From: $name <$email>" . "\r\n";

if (mail($to,$subject,$message,$headers)) {
	echo 'Ваше сообщение успешно отправлено (ответ сервера)!';
} else {
	echo 'Возникла ошибка при отработке функции mail на сервере (ответ сервера)!';
}


let form = document.querySelector('#form');

form.addEventListener('submit', function(evt) {
	evt.preventDefault();

	let formData = {
		name: document.querySelector('input[name="name"]').value,
		phone: document.querySelector('input[name="phone"]').value,
		email: document.querySelector('input[name="email"]').value,
	};

	var request = new XMLHttpRequest();

	request.addEventListener('load', function() {
		alert('Ваша заявка успешно отправлена!');
		form.innerHTML = '<h2>Спасибо за заявку!</h2>';
	});

	request.open('POST', './send.php', true);
	request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
	request.send('name=' + encodeURIComponent(formData.name) + '&email=' + encodeURIComponent(formData.email));
});


<form class="form" id="form" method="post" action="send.php">
					<input type="text" name="name" placeholder="Введите ФИО" class="form__input form__bottom" required="">

					<input type="text" name="phone" placeholder="Введите номер телефона" class="form__input form__bottom" required="">

					<input type="email" name="email" placeholder="Ваше email" class="form__input form__bottom" required>
					<textarea name="textarea" placeholder="Введите сообщение" class="form__textarea form__bottom"></textarea>
						<button class="button" type="submit">send</button>
				</form>
  • Вопрос задан
  • 89 просмотров
Решения вопроса 2
@dpws
Тут:
request.send('name=' + encodeURIComponent(formData.name) + '&email=' + encodeURIComponent(formData.email));
Ответ написан
Комментировать
request.send('name=' + encodeURIComponent(formData.name) + '&email=' + encodeURIComponent(formData.email));
вот потому что ты только 2 поля и отправляешь
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Seasle
@Seasle Куратор тега JavaScript
Чтобы вдруг не забыть какой-либо параметр, можно сделать так
/********************************
 * Подготовка
 ********************************/
const formData = new FormData();

formData.append('name', 'John Doe');
formData.append('email', 'john.doe@example.com');
formData.append('phone', '88005553535');

/********************************
 * Сборка параметров
 ********************************/
const searchParams = new URLSearchParams();
for (let [key, value] of formData.entries()) {
	searchParams.set(key, encodeURIComponent(value));
}

console.log(searchParams.toString()); // name=John%2520Doe&email=john.doe%2540example.com&phone=88005553535


Получается можно будет сделать так: request.send(searchParams.toString());. А ещё можно делать так: new FormData(DOM_ЭЛЕМЕНТ_ФОРМЫ);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы