Uncaught TypeError: Cannot read property '0' of undefined

Uncaught TypeError: Cannot read property '0' of undefined

这是我的脚本:

<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 文件中存储的数据作为绘制图表的数据,而且在 script.but 中弹出此错误。

我做错了什么?

默认情况下,XHR 请求是异步。这意味着 send 启动 它们,但它们稍后完成(这就是它们具有回调而不是 return 值的原因)。只需在回调中使用 obj


旁注:您的代码正在成为 The Horror of Implicit Globals 的牺牲品(您从未声明 [​​=12=] 变量)。