0

フォームの値をURLに投稿するボタンがありますが、投稿中にその値をデータベースにもキャプチャしたいと思います。したがって、ボタンをクリックすると、ajaxの新しいスレッドが作成され、whileループで一時停止されたため、ユーザーはフォームの投稿のためにリダイレクトできません。

しかし、問題は、プログラムがwhileループで応答せず、ajax呼び出しを投稿しないことです。

function btnSubmitId_Onclick() {

    window.setTimeout(function () {

        var FirstName = $(txtFirstNameId).val()
        var Email = $(txtEmailId).val()

        AJAXPost(   //Url
                "Signup"
                , //Data
                {Ip: Ip, CustomerKey: CustomerKey, FirstName: FirstName, Email: Email }
                , //Success
                function (data) {
                    response2 = true;
                }
                , //error
                function (xhr, textStatus, errorThrown) { }
            );

    }, 0);


    var date = new Date();
    var curDate = null;
    do { curDate = new Date(); }
    while (response2 == false)

}

var response2 = false;
4

1 に答える 1

3

あなたは本当にそれをするべきではありません。アクティブな待機は、ブラウザ全体または少なくとも現在のタブをブロックする可能性があります。

リクエストが成功コールバックに成功した後に実行する必要のあるすべてのコードを配置します。

どうやらフォームを通常どおりに送信し、AJAXを使用したいので(なぜ?!)、解決策はかなり単純です。 e.preventDefault()ejQueryイベントハンドラーに渡される最初の引数である)を呼び出して、元の送信がブラウザーによって処理されないようにします。 AJAXリクエストが.submit()フォームに成功した後。AJAXリクエストが再度送信されないようにするには、AJAXリクエストの完了後に、送信イベントハンドラーのバインドを解除するか、変数を設定する必要がある場合があります。

于 2012-06-16T10:37:50.633 に答える