14

こんにちは、スクリプトに 2 つの ajax 呼び出しがあります。時間を空けるために asnyc を実行する必要がありますが、最初の呼び出しが完了するまで 2 番目の呼び出しを待つ必要があります。

$.ajax({
    type: "POST",
    url: "getText.asmx/ws_getText",
    data: parO1,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) {
        alert(msg.d.data);
    }, 
    error: function () {
        chyba("chyba v požadavku", "df");
    }
});

if (parO2.length > 0) {
    $.ajax({
        type: "POST",
        url: "getText.asmx/ws_getText",
        data: parO2,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            /*WAIT UNTIL THE FIRST CALL IS FINISHED AND THAN DO SOMETHING*/
        },
        error: function () {
            chyba("chyba v požadavku", "df");
        }
    });
}

アイデアはありますか?ありがとう

4

4 に答える 4

18

jQuery 1.5以降を使用している場合は、jQuery.when()これを実現するために使用できます。のようなもの(ajaxの呼び出しを短くして簡潔にするために、上記のようにオブジェクトを渡すだけです)

$.when($.ajax("getText.asmx/ws_getText"), 
       $.ajax("getText.asmx/ws_getText")).done(function(a1,  a2){

   // a1 and a2 are arguments resolved for the 
   // first and second ajax requests, respectively
   var jqXHR = a1[2]; // arguments are [ "success", statusText, jqXHR ]
});

それらがどの順序で返されるかわからないので、これを手でロールしている場合は、他のリクエストの状態を確認し、返されるまで待つ必要があります。

于 2012-04-23T21:19:59.630 に答える
1

最初の ajax 呼び出しのコールバック内に含まれるように、2 番目の呼び出しを接続する必要があります。そのようです:

success: function(msg)
{
    alert(msg.d.data);

    if(par02.length > 0)
    {
        // Your 2nd ajax call
    }
},

JavaScript はクライアント上の複数のスレッドで実行されないため、特定の条件が満たされるまでスレッドをブロックすることはできません。

于 2012-04-23T21:17:49.917 に答える
1

jqueryの使用

$.ajax({
        type: "POST",
        async:false, // ** CHANGED **
        url: "getText.asmx/ws_getText",
        data: parO1,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            alert(msg.d.data);
        }
        , error: function () {
            chyba("chyba v požadavku", "df");
        }
    });
于 2014-12-08T15:34:56.293 に答える
0

これは、デュアル ajax リクエストの実行に関する別の回答です。Tejs と同様に、ユーザーは success メソッド内で ajax 呼び出しを行います...

ポスターには、success メソッドで新しい ajax リクエストを起動する方がよいと記載されています。」

1 つのスクリプトで 2 つの $.ajax() 呼び出しを持つ

于 2012-04-23T21:25:25.363 に答える