1

簡単に言えば:

  1. onSubmit イベントに jQuery 関数が関連付けられた HTML フォームがあります。
  2. その 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 関数によって行われますか?

4

1 に答える 1