同じ一般的な AJAX コードを使用するいくつかの連絡先フォームがあります。
$(document).ready(function() {
$('#mainMail').submit( function() {
$.ajax({
type: "POST",
url : "<?php echo home_url(); ?>/wp-content/themes/retlehs-roots-f45f4f5/assets/bin/process.php",
data: $(this).serialize(),
success: function() {
$('#enquiryBox #submitSuccess').removeClass('hidden');
setTimeout(function() { $("#enquiryBox #submitSuccess").addClass('hidden'); }, 15000);
},
error: function() {
$('#enquiryBox #submitFail').removeClass('hidden');
setTimeout(function() { $("#enquiryBox #submitFail").addClass('hidden'); }, 15000);
}
});
return false;
});
});
つまり、フォームが正常に送信され、(process.php 経由で) メールが送信されると、#submitSuccess
div は正常に表示されます。問題は、失敗するとdivも表示されることです(#submitFail
divは非表示のままです)。
これは、process.php が正常に呼び出されなかった場合にのみ ajax post の失敗が発生するためだと思いますか? 電子メールが process.php 経由で送信されない場合、ユーザーにエラー メッセージが表示されるように、これを調整する方法はありますか?
ここに私のprocess.phpコードがあります:
<?php
$robotest = $_POST['robotest']; //just testin' for robots
$recipient = "info@mydomain.com"; //recipient
$email = ($_POST['email']); //senders e-mail adress
if((filter_var($email, FILTER_VALIDATE_EMAIL)) && ($robotest == "")) {
$Name = ($_POST['name']); //senders name
$mail_body = "Hello, \r\n \r\n";
$mail_body .= "You have received a new booking with the following details: \r\n\r\n";
$mail_body .= "{$_POST['comments']}; \r\n \r\n";
$mail_body .= "Please respond to the customer within 30 minutes on the following phone number: {$_POST['phone']} \r\n";
$mail_body .= "Warm regards, \r\n";
$mail_body .= "Robot. \r\n";
$subject = "Free Consult Inquiry"; //subject
$header = "From: ". $Name . " <" . $email . ">\r\n"; //optional headerfields
mail($recipient, $subject, $mail_body, $header); //mail command :)
} else {
print "You've entered an invalid email address!";
}
?>
(これprint "you've entered an invalid email address!"
はエラーメッセージに対する私の試みでしたが、それも機能していません...)