0

重複の可能性:
jQuery を使用した並列非同期 Ajax リクエスト

2 つの ajax リクエストを次々に作成する必要があります。そして、先に終了したものの結果を表示します。問題は、2 番目のものが常に最初のものが終了するのを待つことです。最初のものを中止しようとしましたが、まだ2番目のものは最初のものの終了を待っています. 回避策はありますか?

基本的に最初に、いくつかの XML ファイルを解析し、レコードを MySQL テーブルに挿入する php スクリプトを呼び出します。2 つ目は、最初にインポートした 20 レコードを返す必要がある PHP スクリプトを呼び出します。

私は2つのajax呼び出しとiframeから呼び出された最初の呼び出しで試しました。しかし、結果は常に同じです。2 つ目は、最初の 1 つが終了するのを待っています。私が見つけた唯一の方法は、サブドメインを作成し、最初にサブドメインを呼び出すことです。しかし、これはIEでは機能しません。

誰かがこれを解決する方法を説明できますか?

たぶん、私の問題をもっと説明する必要があります。まず、実行時間が cca 2 分である ajax を呼び出します。最初の 1 つが実行されている間、最初の 1 つによってインポートされたレコードを取得する複数の要求が必要です。

4

2 に答える 2

3

AJAX callbackを使用して実行を試みることができます。基本的に、ネストされたコールバックを入力して、仕事を終わらせることができます。解析された XML を取得すると最初のコールバックが呼び出され、最初のコールバックによって 2 番目のコールバックが呼び出されます。

コード例の更新:

var callback2 = function(data)
{
   // Callbacks complete
   // Now do some more stuff
}
var callback1 = function(data)
{
   //do something;
   $.ajax({
    url: '/echo/html/',
    success: function(data) {
        callback2(data);
    }
});   
}
$.ajax({
    url: '/echo/html/',
    success: function(data) {
        callback1(data);
    }
});

上記の例では、2 回目の Ajax 呼び出しが完了すると、callback2 が呼び出されます。

于 2012-10-23T08:36:09.830 に答える
-1

それらを順番に呼び出します。最初のものを呼び出すと、非同期で実行されます。次に、2 番目のものを呼び出します。その時点で、最初のリクエストはまだ実行中です。ただし、最初のリクエストの直後に 2 番目のリクエストが送信されるとは限りません。したがって、タイムアウトを設定できます。以下の例を参照してください。

$.post('ajax/first_call', function(data) {
    // process returned data of first ajax call
});
window.setTimeout(function(){
    $.post('ajax/second_call', function(data) {
        // process returned data of second ajax call
    });
}, 2000);

ここでは、2 秒後に 2 番目の ajax 呼び出しが要求されます。そして、それは最初の呼び出しに依存しません。

于 2012-10-23T08:50:22.067 に答える