我的郵件表單有問題,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()'上得到誤報,但是服務器仍然無法發送,或者郵件永遠不會到達,因爲客戶拒絕了它。 –