我有一个加载JSON文件并将其提供给名为articles的变量的函数。当我在函数内部记录文章时,它会显示我的json文件,但是当我在函数外部记录日志时,它根本不会显示任何内容
我试图在函数内部的文章之前使用let和var,但这似乎不起作用
var articles = ""
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
if(xmlhttp.status == 200 && xmlhttp.readyState == 4){
articles = xmlhttp.responseText;
console.log(articles);
}
};
console.log(articles);
console.log(xmlhttp);
xmlhttp.open("GET","articles.json",true);
xmlhttp.send();
我希望能够通过使用文章在函数之外调用json文件,这样我就不必每次都具有xml.responseText类型。
答案 0 :(得分:3)
简而言之,JavaScript无法同步运行。
这意味着,当您在功能之外记录文章时,尚未设置articles变量(http请求尚未完成)。
您为什么希望可以全局访问文章?
http请求响应后,您可以选择将文章传递给处理方法,如下所示:
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
if(xmlhttp.status == 200 && xmlhttp.readyState == 4){
var articles = xmlhttp.responseText;
processArticles(articles)
}
};
xmlhttp.open("GET","articles.json",true);
xmlhttp.send();
function processArticles(articles) {
// Do something with articles here
}