Возникли проблемы с моей формой Mail, HTML кажется прекрасным, часть jQuery тоже и PHP тоже правильны. У части, с которой я столкнулся, заключается в том, что jQuery не может уловить ответ об ошибке из скрипта PHP. Он должен загрузить данные из ответа и поместить его в класс, но ничего не происходит, но я вижу ответ в консоли.Простая PHP-форма электронной почты jQuery
вот JQuery:
jQuery.ajax({
url: "send_email.php",
data:'name='+emailData.name+'&email='+
emailData.email+'&subject='+
'Hello'+'&body='+
emailData.body,
type: "POST",
success:function(data){
$("#contactForm .status").html(data);
},
error:function(data){
$('#modal .modal-body').html(data);
}
});
и PHP скрипт:
$toEmail = "[email protected]_samples.com";
$mailHeaders = "From: " . $_POST["name"] . "<". $_POST["email"] .">\r\n";
if(mail($toEmail, $_POST["subject"], $_POST["body"], $mailHeaders)) {
print "<p class='success'>Mail Sent.</p>";
} else {
print "<p class='error'>Problem in Sending Mail.</p>";
}
Таким образом, любые идеи, почему я не могу уловить реакцию на ошибку? стр. Я включил только необходимые биты кода.
'error' запускается, если есть фактическая ошибка HTTP. То есть ошибка сервера 500 или 404 или что-то в этом роде. Однако вы возвращаете данные, если PHP 'mail()' происходит с ошибкой. 'ajax' рассматривает его как успешный вызов. –
В дополнение к комментариям других пользователей, я бы сказал, что вы нарушаете какой-то спам-фильтр. '$ _POST ['email']' должен быть из того же домена, отправляющего почту. В противном случае вы должны передать '$ _POST ['email']' в качестве заголовка Reply-To. Таким образом, вы можете получить ложный позитив на 'mail()', но сервер по-прежнему не может отправить, или почта никогда не приходит, потому что клиент отклонил ее. –