2011-07-07 52 views
1

我試圖一個接一個地運行兩個ajax請求。所以,我可以使用AJAX成功()函數:jquery AJAX一個接一個

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

的問題是,第一Ajax請求只獲取執行,當條件爲真。所以我的代碼如下所示:

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

我該如何運行這些請求?還是標準的,第二個只在第一個完成時才執行?

回答

5

的jQuery 1.5引入了deferred objects [docs],並$.ajax[docs]將返回一個:

$.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條件下,而第二個則不是。 – groh

+0

@groh:請參閱我的更新。 –

+0

但是第二個請求只在第一個請求被執行時才起作用。 Mhh,看起來最好的解決方案是使第一個請求同步。 – groh