这是我的剧本:
<script>
var count;
var obj;
function recherche() {
xhr = new XMLHttpRequest();
xhr.open("GET", "test.json", true);
xhr.send(null);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
var res = xhr.responseText;
obj = JSON.parse(res);
for (count = 0; count < obj.length; count++) {
alert(obj[count].humidity);
}
}
}
}
alert(obj);
window.onload = recherche;
</script>
运行此脚本后出现此错误:
Uncaught TypeError: Cannot read property '0' of undefined
第一个警报工作正常,显示我20,30,40,但如果我在外面做警报我没有定义。
我想使用对象obj将其存储在json文件中的数据用作数据,以便在脚本中进一步绘制图表。但是这个错误会弹出。
我做错了什么?
答案 0 :(得分:1)
默认情况下,XHR请求是异步。这意味着send
启动它们,但它们稍后完成(这就是为什么它们有回调而不是返回值)。只需在回调中使用obj
。
旁注:您的代码正在成为The Horror of Implicit Globals的牺牲品(您永远不会声明您的xhr
变量。)