所以我试图获取json数据并将其存储在变量中。问题是.onReadyStateChange块中的所有内容都像一个黑洞,什么也没有,所以我无法检索信息。我可以从该块内调用函数,它将起作用,但是我尝试保存到外部实体的任何内容都将导致null,即使该变量属于window范围。
var globalVar;
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var foodsArray = JSON.parse(this.responseText);
globalVar = JSON.stringify(foodsArray);
}
}
console.log(globalVar);
//result will be null, so will foodsArray had I made it global
所以我的问题是,有什么办法可以将该信息保存在该块之外?谢谢。
最佳答案
首先,您需要了解ajax的原理。您知道,ajax是一个异步函数,因此当您尚未获得返回值时,将执行'console.log(globalVar)'。所以你应该这样写:
var globalVar;
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var foodsArray = JSON.parse(this.responseText);
globalVar = JSON.stringify(foodsArray);
console.log(globalVar); // you can get the result
}
}