我知道這個(或類似的)問題已被詢問了很多次。我仍然不明白如何讓加載的對象超出創建它的函數的範圍。使用XMLHttpRequest將JSON文件加載到全局範圍內的Javascript數組中
特別是如果我做
var xmlhttp = new XMLHttpRequest();
var url = "lineJSON.json";
var myArr= new Array();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myArr = JSON.parse(this.responseText);
console.log(myArr[0].url); //here it give the right output
}
};
xmlhttp.open("GET", url, true);
xmlhttp.send();
console.log(myArr[0].url); // Cannot read property 'url' of undefined
在第二的console.log myArr,該顯然是不能工作的,其url
關鍵是不確定的!
如何在function
之外提供myArr
?
FYI的JSON是
[
{
"display": "JavaScript Tutorial",
"url": "http://www.w3schools.com/js/default.asp"
},
{
"display": "JavaScript Tutorial",
"url": "http://www.w3schools.com/js/default.asp"
}
]
如果可能的話,我想不使用jQuery。
這個問題應該是一個重複的問題,關於jQuery。 「同步」請求的問題似乎是一樣的。 –