ajaxを使用してリロードするよりも、感謝のメッセージを表示するために、フォームの内容を正しくメールで送信できない場合があります。 JSからpreventDefault()を削除すると、正しく送信されるフォームが取得されますが、明らかに、ページファイルがPHPファイルにリダイレクトされることになります。コードには以下のものが含まれています。サイトはWordpressで動作していますが、プラグインを使用したくないのは、フォームデザインを破る余分な要素が追加されているようです。e.preventDefault ajaxを使用してフォームアクションコードを停止する
HTML
<form method="post" action="<?php echo get_template_directory_uri();?>/review-form-handler.php" id="websiteReviewForm">
<div class="formField">
<div class="inputEffect">
<input type="text" name="Website" required>
<hr>
<label for="Website">Your Website?</label>
</div>
<p>1/4</p>
</div>
<div class="formField">
<div class="inputEffect">
<input type="text" name="Name" required>
<hr>
<label for="Name">Your Name?</label>
</div>
<p>2/4</p>
</div>
<div class="formField">
<div class="inputEffect">
<input type="text" name="Email" required>
<hr>
<label for="Email">Your Email?</label>
</div>
<p>3/4</p>
</div>
<div class="formField">
<div class="inputEffect">
<input type="text" name="Phone" required>
<hr>
<label for="Phone">Your Phone Number?</label>
</div>
<p>4/4</p>
</div>
<input type="submit" name="submit" value="REVIEW MY WEBSITE">
</form>
JS
$('#websiteReviewForm').submit(function(e){
e.preventDefault();
$.ajax({
url:$(this).attr('action'),
type:'post',
data:$(this).serialize(),
success:function(){
$('#websiteReviewForm').hide();
$('.thankyouMessage').show();
}
});
});
PHP
<?php
if($_POST["submit"]) {
$recipient="MY EMAIL";
$subject="Form to email message";
$sender="Visix";
$senderEmail="MY EMAIL";
$website=$_POST["Website"];
$name=$_POST["Name"];
$email=$_POST["Email"];
$number=$_POST["Number"];
$mailBody="Name: $sender\nEmail: $senderEmail\nWebsite: $website\nName: $name\nEmail: $email\nPhone number: $number";
mail($recipient, $subject, $mailBody, "From: $sender <$senderEmail>");
}
?>
*「私はきちんと私には、その内容を電子メールで送信するためのフォームを取得いくつかの問題を抱えています」 *フォームはどこにでもそのコンテンツをメールで送ってはいけません。 –
質問に答えるために必要なすべての情報を提供してくれた素晴らしい仕事! –