2009-07-12 56 views
2

獲取數據我正在寫一個web應用程序,需要初始化我通過$ .getJSON()方法拉一些參數。

$.getJSON("../config/", function(data) 
{ 
    console.debug(data); 
} 

現在,因爲這些值將在全球整個腳本中使用,不會直接觸發事件(這是$ .getJSON(中)唯一實現我的文檔中找到),我怎麼能回國或檢索此回調數據?

+1

我沒有在這裏得到你的問題,$ .getJSON第二個參數是一個回調函數,這就是所謂一旦請求已完成併成功。 – 2009-07-12 01:52:19

+0

你想用getJSON中的數據做什麼? – txwikinger 2009-07-12 02:50:35

回答

15

最好的辦法是堅持回調技術。

有2個真正的辦法,使其工作,兩者基本相同。

$.getJSON("../config/", function(data) { 
     SomeObject.config = data; 
     SomeObject.load(); # assuming load tells some-object that it now has data and to get cracking 
}); 

$.getJSON("../config/", function(data) { 
     SomeObject.load(data); # SomeObject sets itself up and starts doing its thing 
}); 

試圖以同步的方式來使用$ .getJSON(即:具有它返回一個值)會使用眼淚和痛苦都爲你人們才結束您的網站,因爲同步連接有阻止整個用戶界面的趨勢。 :)

因爲它的立場,做這樣的事異步

var i = null;        #1 
$.getJSON("../config/", function(data) { #2 
     i = data;       #3 
});          #4 
some_function_with(i);      #5 

就不行,因爲5號線幾乎是保證行之前執行3.

+0

你剛剛幫了我一筆不小的交易。有一個upvote! – Daishiman 2009-11-23 10:37:12

3

肯特張新軍:我不知道如果你的方法可能會更好,所以如果你的方法是更好地讓我知道如何,我會在我自己接受你的解決方案,但我這是怎麼做的:

var my_data = null; 

$.ajax(
{ 
    url: "../config/", 
    dataType: "json", 
    async: false, 
    success: function(data) 
    { 
     my_data = data; 
    } 
}); 

也謝謝豐富ieHindle,我不知道可以在不返回的情況下替換函數外部的變量。