簡単に言えば:
- onSubmit イベントに jQuery 関数が関連付けられた HTML フォームがあります。
- その onSubmit 関数内で、AJAX 呼び出しを行い、応答に基づいてフォーム要素を更新する必要があります。
サンプルコード:
$("#theForm").submit(function() {
$.ajax({
url: theUrl,
type: "POST",
data: theData
}).done(function(theResponse) {
$("#someInput").val(theResponse)
$("#theForm").submit() // [2] Submit the form now
}).fail(function(jqXHR, textStatus) {
alert("Failure")
})
return false // [1] Prevent submission prior to AJAX call completing
})
私の問題は、これが無限ループを作成することです。
この関数の最外層は を返しfalse
、AJAX 呼び出しが終了する前にフォームが送信されるのを防ぎます。done()
AJAX呼び出しが正常に完了した後、ハンドラー内で実際にフォームを送信しようとしています。ただし、これは onSubmit 関数全体を再帰的に呼び出すだけです。
onSubmit ハンドラー内に AJAX 呼び出しをネストするにはどうすればよいですか?送信を許可するかどうかの決定は、それを囲むハンドラー関数ではなく、ネストされた AJAX 関数によって行われますか?