2013-06-24 38 views
1

現在,我有以下幾點:如何避免爲兩個獨立的數據源嵌套getJSON?

$.getJSON("firsturl", function(source1) { 
    $.getJSON("secondurl", function(source2) { 
     // I have source 1 and source 2 data here! 
    } 
} 

什麼是從兩個來源獲取數據..和做與他們兩個東西沒有嵌套所有這些$ .getJSON調用一個更好的辦法?

+0

是U依賴於'source1'叫'secondurl'? – krishgopinath

+0

http://api.jquery.com/category/deferred-object/ – epascarello

+0

@passionateCoder不,我不是。它們是相互排斥的。但是在我做其他事情之前,我需要source1和source2。 – Setsuna

回答

8

您可以使用$.when

$.when($.getJSON("/firsturl"), $.getJSON("secondurl")).done(function(result1, result2){ 
    /* result1 and result2 are arguments resolved for the 
     page1 and page2 ajax requests, respectively. 
     each argument is an array with the following 
     structure: [ data, statusText, jqXHR ] */ 
}); 
+0

所以,你的'source1'是'result1 [0]','source2''' result2 [0]' –

+0

確實如此。 – bigblind

+0

以下是使用延遲對象的示例。延遲對象只是等待異步完成的對象,因此您可以使用任何數據來解決它們。在getJSON的例子中,結果數據和xhr的東西將被傳遞。在這個例子中,我只是使用數字。 http://jsfiddle.net/8KKtq/ – bigblind

3

使用jQuery遞延對象與$.when

var first = $.getJSON("firstUrl"); 

var second = $.getJSON("secondUrl"); 

$.when(first, second).done(function(firstResult, secondResult) { 
    // do stuff; 

});