2011-07-07 12 views
1

私は2つのAjaxリクエストを次々に実行しようとしています。JQuery AJAX by one

$.ajax({ 
    ... 
    success: function() { 
     //here the second ajax request 
    } 
}); 

問題があり、最初のAjaxのリクエストがのみ実行されることを、条件が真である:だから、私はアヤックス成功()関数を使用することができます。だから私のコードは次のようになります:

if($cond) { 
    $.ajax({ 
     ... 
    }); 
} 
$.ajax({ 
    ... 
}); 

私はこれらのリクエストを1つずつ実行できますか?それとも、最初のものが終了したときにのみ2番目のものが実行されるのは標準ですか?

答えて

5

のjQuery 1.5はdeferred objects [docs]を導入し、$.ajax[docs]は1を返して:

$.ajax({ 
    //... 
}).then(function() { 
    $.ajax({ 
     //... 
    }); 
}); 

参考:deferred.then[docs]

アップデート:

:あなたがこれを行うことができますあなたの場合は

var deferred = jQuery.Deferred(); 
deferred.resolve(); // <- I think you need this here but I'm not sure. 

if($cond) { 
    deferred = $.ajax({ 
     ... 
    }); 
} 
deferred.then(function() { 
    $.ajax({ 
     //... 
    }); 
}); 
+0

最初のajax要求は$ cond条件の下にあり、2番目の要求はそうではないため、これは機能しません。 – groh

+0

@groh:私のアップデートをご覧ください。 –

+0

しかし、2番目の要求は、最初の要求が実行されたときにのみ機能します。最初のリクエストを同期させるのが最善のソリューションだと思われます。 – groh