gpt4 book ai didi

javascript - Node.js 无法使用 JSON 数据读取未定义的属性

转载 作者:行者123 更新时间:2023-11-30 21:07:45 25 4
gpt4 key购买 nike

我正在尝试将 js 脚本转换为 node.js 脚本。 JS 脚本工作正常,并设法从 this URL 中提取数据并正确使用信息。但是,当我尝试在 Node.js 上运行它时,出现错误 “无法读取‘fixtures’未定义的属性。”我添加了 this package提取数据,但我不确定为什么它现在会抛出错误。

var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
var xhr = new XMLHttpRequest();

//Get Data
var getJSON = function(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'json';
xhr.onload = function() {
var status = xhr.status;
if (status === 200) {
callback(null, xhr.response);
} else {
callback(status, xhr.response);
}
};
xhr.send();
};

//Use Data
getJSON('http://api.football-data.org/v1/teams/343/fixtures',
function(err, data) {
if (err !== null) {
console.log(" An error has occured.")
} else {
var latest;
for(x = 0; data.fixtures[x].status !== "TIMED"; x++) {
latest = data.fixtures[x].matchday - 1;
}
}};

while(data.fixtures[x].status !== "TIMED")行抛出错误,错误为

for(x = 0; data.fixtures[x].status !== "TIMED"; x++) {
^

TypeError: Cannot read property 'fixtures' of undefined

请你解释一下为什么 JS 可以看到数据并正常使用它,但 node.js 看到的属性是未定义的?

非常感谢。

编辑:删除了不应该存在的遗留 while 循环。

最佳答案

您收到该消息的原因是因为您的回调中的变量 data undefined。之所以如此,是因为您正在传递它

callback(null, xhr.response); //<-- You should have used responseText

但即使这样也不能解决问题——它是文本而不是 json。所以解析它

callback(null, JSON.parse(xhr.responseText));

关于javascript - Node.js 无法使用 JSON 数据读取未定义的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46449134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com