我必須做一些非常簡單的事情,但是據我所知,似乎沒有一個簡單的方法可以做到這一點。我只想從遠程源加載JSON數據,然后使用jQuery將其存儲在全局Javascript變量中。這是我所擁有的: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仍為null。似乎您必須使用回調函數來返回responsetext,因為它會在成功時觸發。不可能這么難!對?
3 回答

三國紛爭
TA貢獻1804條經驗 獲得超7個贊
這樣做:
var json = (function () {
var json = null;
$.ajax({
'async': false,
'global': false,
'url': my_url,
'dataType': "json",
'success': function (data) {
json = data;
}
});
return json;
})();
主要問題是$.getJSON它將異步運行,因此,即使在其success回調觸發之前,您的Javascript也會經過調用它的表達式之后,因此無法保證您的變量將捕獲任何數據。
請特別注意'async': false上述ajax調用中的選項。該手冊說:
默認情況下,所有請求都是異步發送的(即默認情況下設置為true)。如果需要同步請求,請將此選項設置為false。請注意,同步請求可能會暫時鎖定瀏覽器,從而在請求處于活動狀態時禁用任何操作。
- 3 回答
- 0 關注
- 425 瀏覽
添加回答
舉報
0/150
提交
取消