我的邮件表单有问题,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>";
}
因此,任何想法,为什么我不能捕获错误的反应? p.s.我只包含代码的必要位。
如果存在实际的HTTP错误,则会触发'error'。即服务器错误500或404什么的。但是,如果PHP“mail()”发生故障,您将返回数据。 'ajax'认为它是一个成功的电话。 –
除了其他的错误评论,我会说你违反了某种垃圾邮件过滤器。 '$ _POST ['email']'必须来自发送邮件的同一个域。否则,您应该将'$ _POST ['email']'作为回复标头。所以你可以在'mail()'上得到误报,但是服务器仍然无法发送,或者邮件永远不会到达,因为客户拒绝了它。 –