Dzvonkevich
@Dzvonkevich
Wordpress & Frontend разработчик

Отправляю письмо через AJAX+PHP. Письмо пришло, но AJAX возвращает error. Почему?

Привет, коллеги! Наткнулся на интересную ситуацию. Из заголовка понятна суть вопроса, перейдем сразу к коду

Функция JS

var responseTicket = function(){ // Я возвращаю эту функцию, когда форма прошла успешную валидацию
		var msg = $('#popup-contact__form').serialize();

		$.ajax({
			method: 'POST',
			url: 'email/response.php',
			dataType: 'json',
			data: msg,
			beforeSend: function() { // работает
				var img = '<img id="loader" style="margin-left: 1.5rem;" src="loader.gif"';
				$('.popup--controller__submit').append(img);			
			},
			complete: function() { // работает
				$('#loader').detach();		
			},
			success: function() { // форма отправилась, получил письмо на почту с данными
				return showSuccess();
			},
			error: function() { // так почему выводится ошибка?
				return showError();
			}
		});

		return false; 
	}


Код PHP
Может быть тут ошибка?

<?php

            $to = 'hello@gmail.com';
            $subject = 'Заказ билета на матч ' . $_POST['popup-contact__place']; 
            $message = '
                    <html>
                        <head>
                            <title>' . $subject . '</title>
                        </head>
                        <body>
                            <p>Имя покупателя: ' . $_POST['popup-contact__name'] . '<br />
                            Телефон или e-mail: ' . $_POST['popup-contact__contact'] . '</p>                       
                        </body>
                    </html>'; 
            $headers  = "Content-type: text/html; charset=utf-8 \r\n"; 
            $headers .= "From: JoyFans <no-reply@email.ru> \r\n";
            mail($to, $subject, $message, $headers); 
?>
  • Вопрос задан
  • 317 просмотров
Решения вопроса 2
dpigo
@dpigo
Front-end developer
Сервер должен возвращать HTTP код 200, чтобы был success в ajax.
Ответ написан
kavi4
@kavi4
Web developer
сервер должен что-то вернуть, иначе считается ошибка, сделай
if( mail($to, $subject, $message, $headers))
{
return true;
}else
{
return false;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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