我必須做一些非常簡單的事情,但據我所知,似乎並沒有簡單的方法來做到這一點。我只想從遠程源加載JSON數據並使用jQuery將其存儲在全局JavaScript變量中。這裏是我的:將json加載到變量
var my_json;
$.getJSON(my_url, function(json) {
var my_json = json;
});
my_json變量保持未定義。我認爲這顯然是一個範圍問題。在我看來,$ .getJSON方法應該返回JSON,但它返回一個XMLHttpRequest對象。如果我這樣做:
request = $.getJSON(my_url);
my_json = request.responseText.evalJSON();
這是行不通的,因爲直到readystate == 4,responsetext保持爲空。看來你必須使用回調函數來返回responsetext,因爲它在成功時觸發。
它不能這麼難!對?
只是爲了說明我的好處:即使我在成功回調期間將數據返回給變量,$ .getJSON對於同步樣式請求從來也不是一個好選擇? – user1026169 2013-04-20 20:54:41
對於相關信息+1,但爲什麼你要在函數的開始時使json變量爲null。 – Manoj 2014-06-13 12:30:19
@Manoj有兩個原因[1]這個塊可能在一個方法內部,並被多次調用。因此,這將刷新json變量。但是,如果ajax請求會更新這個問題,那有什麼意義呢?那麼,因爲... [2]這是一個編碼約定,因爲ajax請求失敗,那麼用戶可以測試json是否爲空。如果是,則可以假定ajax請求失敗 – 2014-10-21 22:10:17