2012-07-31 53 views
0

可能重複:
Sequencing ajax requestsjQuery的隊列中的多個JSON調用和回調

我有藝術家的名字的數組。 對於每個藝術家的名字我做一個ajax json調用web服務來獲取這位藝術家的歌曲。

我現在的問題是:我怎麼能確定,所有的Ajax請求完成(成功或失敗)。

我看着DeferredsAjaxManager,但使其運行我不能執行它(如果它是正確的方法...)

我的代碼看起來是這樣的:

$.each(tf.suggestedArtists, function(index, artist){ 
    var url = tf.enBaseUrl + "song/search?api_key=" + tf.apiKey + "&format=json&artist=" + artist.name + "&bucket=id:spotify-WW&bucket=tracks" 

    $.ajax({ 
    type: "GET", 
    url: url, 
    dataType: 'json', 
    }).done(function(data) { 
    //...do some more stuff 

這是不可能的由於JSON和跨域問題而做這些調用異步。

+0

可能看http://gnarf.net/2011/06/21/jquery-ajaxqueue/一些靈感 – BLSully 2012-07-31 13:49:59

回答

1

如果您想確保所有ajax請求都已完成,您可以使用if語句和$.active ,.

if($.active > 0){ 
    //There's an ajax request pending. 
}else{ 
    //No ajax requests pending. 
} 
+0

尼斯一個,沒knwow有關。它適用於jQuery Ajax調用。接下來的問題是,在我的每個ajax調用中,我從另一個庫中獲得了另一個異步調用。但我認爲這是另一個問題... – agrT 2012-07-31 14:38:53

+0

@AndreasGeibert是的。 $ .active *沒有記錄*,但它暴露在jQuery API中,因此很容易找到並使用它。你從另一個庫獲得另一個異步調用?爲什麼不救自己頭痛,只使用1個庫。幾乎沒有任何理由使用諸如mootools + jquery,scriptaculous + jquery,或者mootools + scriptaculous ......之類的東西,並堅持使用它,這是一個更安全的選擇。 – Ohgodwhy 2012-07-31 14:44:08

+0

不,我寫錯了:在我的ajax調用中,我通過spotify庫調用spotify api。沒有其他的JavaScript框架/ lib。並且那個spotify調用也是異步的... – agrT 2012-07-31 14:51:15