0

jquery の for ループ内で $.ajax を使用しています。

for(var i=0; i < 2; 1++)
{

$.ajax({
url :"/models/getdata"+i
dataType:"json"
success:function(data)
{
}
});

}

i = 0の成功関数に行く前。i=1 が来て、この値に対して ajax リクエストを実行します。現在の反復が完了するまで次の反復を待つ必要があります。

つまり、1 つの ajax リクエストが正常に完了し、i 値がインクリメントされてから次の反復が開始されます。

別のシナリオも検討してください

function A()
{
$.ajax code

}
/////another operation

ここで同じ関数 A() は、その ajax ポストが完了するまで待機する必要があります。しかし、私の場合、次のコードの実行開始に進み、現在の関数が完了する前にそれ以上の実行を停止するにはどうすればよいですか。C# の睡眠の概念のように

これどうやってするの ?

ありがとう、

シヴァ

4

4 に答える 4

3

シンプルな一般的なソリューション:

var i=0;
(function doOne(){
    $.ajax({
        url :"/models/getdata"+i
        dataType:"json"
        success:function(data){
            if (++i<2) doOne();
        }
    });
})();

2 番目のケースでは、 $.ajax によって返されるdeferredを使用できます。

function A() {
   return $.ajax(...)
}

A().done(function(){
   // some code executed after the ajax call finished
});
于 2013-09-06T11:11:16.267 に答える
0

async: falseajax呼び出しで設定

于 2013-09-06T11:10:53.080 に答える
-1

デフォルトでは、 を使用すると、すべてのリクエストが非同期で送信されます$.ajax。非同期とは、Web アプリケーションが、既存のページの表示や動作に干渉することなく、(バックグラウンドで) サーバーにデータを送信したり、サーバーからデータを取得したりできることを意味します。ただし、リクエストが完了するまで実行を停止したいのでasync、「false」に設定します。

これを使って -

$.ajax({
    url :"/models/getdata"+i
    dataType:"json",
    async: false,
    success:function(data)
    {
    }
 });
于 2013-09-06T11:11:52.180 に答える