2012-05-04 18 views
1

フォームの送信時にアクションを実行する方法がわかりましたが、送信する前に少し問題があります。アクションタグがユーザーを別のサイトにリダイレクトするのは、送信ボタンをクリックしたときにメールを送信するAJAXが必要なことです。 AJAXが失敗した場合でも、ユーザーはリダイレクトされます。jQuery:フォームを送信する前のAjax

$ .ajax()について読んでいますが、jQueryが応答を受け取るまでフォームのサブミットを停止する方法はわかりません。それは自動的に行われますか?

別のスレッドでは、送信する代わりに入力タイプの「ボタン」を使用することをおすすめします。 これは、私が手動で$(form).submit()を実行できることを知っています。後で、私により良いコントロールを与えるが、私はまだ前の部分を完全に理解するために頑張る。

私はこれに対する答えが非常に簡単であることを知っています。私はおそらく自分自身を複雑にする上で円で動作しています!

ありがとうございました!

答えて

8

を(ちょうどあなたが再び二度目のAJAX要求をしないことを確認してください)。

$.ajax({ 
    url: 'my_url.php', 
    async:false, 
    ..... 
}); 
+0

$ .ajax()が応答を受け取ると、残りのjqueryコードが実行されますか?私は何か特別なもので成功のパラームを設定する必要がありますか? – Ignacio

+0

いいえ、成功のパラメータで特別な処理を行う必要はありません。 'async'をfalseに設定すると、' $ .ajax'関数は応答を受け取るまで戻りません。したがって、残りのコードは要求が完了するまで遅延します。 –

+0

このソリューションは実装が非常に簡単で、不思議に感謝しました。 – Ignacio

1

あなたが他に見たお勧めはまさにあなたがしなければならないものです。

提出を直ちにキャンセルする必要があります。 (return falseまたはe.preventDefault()を呼び出して) 次に、サーバーからの返信を受け取ったら、AJAXコールバックでフォームを再送信できます。
あなたがasyncオプションを無効にすることができ、AJAXリクエストが完了するまで、フォームの送信を防ぐために

0

フォームのonSubmit属性を使用できます。

<form action="./something.php" method="post" onSubmit="someFunction();"> 

機能は、デフォルトのアクションが行わtrue返す場合

は、そうでない場合は、デフォルトの動作が抑制されます。

関連する問題