我正在尝试通过AJAX为Greasemonkey脚本提取一些JSON数据。
这就是我所拥有的:
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var xmlresult = JSON.parse(this.response);
// this works
console.log(xmlresult);
}
};
xmlhttp.open("GET", "https://raw.githubusercontent.com/mledoze/countries/master/countries.json", true);
xmlhttp.send();
// this doesn't work
console.log(xmlresult);
出于某种原因,xmlresult
始终为空。如果我直接在控制台中转储响应,响应中显然有数据,但如果我尝试在if块之外做任何事情,它就不存在。
答案 0 :(得分:-1)
这是因为xmlresult
是onreadystatechange
侦听器功能中的局部变量,并且它的值不会被保留供外部使用。你应该这样做:
var xmlresult;
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
xmlresult = JSON.parse(this.response);
}
};
xmlhttp.open("GET", "https://raw.githubusercontent.com/mledoze/countries/master/countries.json", true);
xmlhttp.send();