所以我试图获取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
    }
}

10-08 08:14