2016-08-09 5 views
1

フォームを送信し、成功している場合、それは私がdiv要素がちょうど消えるしたいというよりも、「それは成功だった」という警告が表示されます。..提出が成功した場合どのようにして部門を消滅させるのですか?

jQueryの

$(document).ready(function() { 
     $(":submit").click(function() { 

      var name= $('#name').val(); 
      var email= $('#email').val(); 

      var varData= 'name=' + name + '&email' + email; 
      console.log(varData); 

      $.ajax({ 
       type: "POST", 
       url: "form.php", 
       data: varData, 
       success: function() { 
        // needs changing 
        alert("It was success"); 
       } 
      }) 

     }); 
    }); 

HTML

<div id="container.form"> 
       <hr> 
       <label for="name">Name</label> 
       <br> 
       <input type="text" name="name" id="name" class="NewsLetter1" /> 
       <br> 
       <label for="email">Email</label> 
       <br> 
       <input type="text" name="email" id="email" class="NewsLetter2" /> 
       <input type="submit" value="Submit"> 
       <hr> 
</div> 

PHP

<?php  
$name = $_POST['name']; 
$email = $_POST['email'];  
mail($email, $name, "Thank you")  
?> 
+0

問題#1:あなたは「&Eメールの後に等号が欠落しています":var varData = 'name =' + name + '&email' + email;'。問題2: "get"パラメータを使用しているので、 'type:" POST "の代わりに' type: "GET" 'を使うべきです。 –

+0

$( '#container.form')。hide()? – ssilas777

+1

あなたの質問は何ですか? –

答えて

0

あなただけ置き換えることができますこの:これにより

success: function() { 
    // needs changing 
    alert("It was success"); 
} 

success: function() {  
    $('#container\\.form').hide(); 
} 
+0

'#container.form'は' id 'が' container '、 'classが' form'の要素を探します –

+0

@RoryMcCrossanありがとう!一定! –

1

問題のカップルがここにあります。

まず、formsubmit()イベントに接続し、event.preventDefault()を使用してキャンセルする必要があります。あなたの現在のコードは、AJAXリクエストを無視し、標準的な方法でフォームを送信します。

第2に、クエリ文字列が正しくフォーマットされていない - =がありません。この理由のために$.ajaxdataプロパティにオブジェクトを指定する方が良い理由があります(タイプミスを避けるため)また、jQueryが必要な文字をエンコードするためです。

実際の問題を解決するには、非表示にしたいdivhide()または​​に電話してください。 id.からエスケープする必要があります。そうしないと、クラスセレクタとして解釈されます。

<div id="container.form"> 
    <form method="post" action="form.php"> 
     <hr> 
     <label for="name">Name</label><br> 
     <input type="text" name="name" id="name" class="NewsLetter1" /><br> 
     <label for="email">Email</label><br> 
     <input type="text" name="email" id="email" class="NewsLetter2" /> 
     <input type="submit" value="Submit"> 
     <hr> 
    </form> 
</div> 
$("form").submit(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
     type: this.method, 
     url: this.action, 
     data: { 
      name: $('#name').val(), 
      email: $('#email').val() 
     }, 
     success: function() { 
      $('#container\\.form').hide(); 
     } 
    }) 

}); 
+0

'email:$('#email ')。val();'これにコンマを入れてはいけませんか? – helloineedhelp

+0

私の間違い - セミコロンは全く存在してはいけません。回答が更新されました –

+0

PHPページにリダイレクトされ、戻っていませんか?これはフォーム上のアクションと関係がありますか? – helloineedhelp

0

1)<フォーム>要素を使用して、イベントをonSubmitを使用することをお勧めし:これを試してみてください。それは本当の意味です。

$("#formid").submit(function() { 
    $.ajax({ 
     type: "POST", 
     url: "form.php", 
     data: $("#formid").serialize(), 
     success: function() { 
      // needs changing 
      alert("It was success"); 
     } 
    }) 
}) 
0

あなたのid属性のドットを持っている、とドットがクラスのフィルタリングに使用されているので、あなたはその点をエスケープする必要があります

success: function() { 
    $('#container\\.form').hide(); 
} 
関連する問題