2017-01-06 7 views
1

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>"); 
} 

?> 
+0

*「私はきちんと私には、その内容を電子メールで送信するためのフォームを取得いくつかの問題を抱えています」 *フォームはどこにでもそのコンテンツをメールで送ってはいけません。 –

+0

質問に答えるために必要なすべての情報を提供してくれた素晴らしい仕事! –

答えて

1

問題は、FOをチェックしている方法ですPHPでフォームをrを:

if($_POST["submit"]) { 

あなたが送信ボタンでtrigged正常な機構を介してそれを投稿していないので、サーバーに送信されたデータにはsubmitエントリはありません。 (フォームが実際にそのボタンの活性化を介して送信されたときにsubmitボタンの値のみが送信されます。)

あなたはに...

  1. によって

    <input type="hidden" name="submit" value="x"> 
    
    を追加することを解決することができます形式:

  2. またはシリアル化した後にコールに追加する:

    data: $(this).serialize() + "&submit=x", 
    
  3. それともだけで既に存在している他のフィールドのうちの1つまたは複数のチェック

+0

迅速な対応のためにありがとうございます:-)問題は解決しました! – Robkwood

関連する問題