【发布时间】:2017-07-25 02:04:11
【问题描述】:
我正在尝试从网站下载并显示 API 数据。这是我目前正在使用的代码:
function loadJSON(file, callback) {
var xobj = new XMLHttpRequest();
xobj.overrideMimeType("application/json");
xobj.open('GET', file, true);
xobj.onreadystatechange = function () {
if (xobj.readyState == 4 && xobj.status == "200") {
callback(xobj.responseText);
}
};
xobj.send(null);
}
var outerSpace;
loadJSON("http://api.open-notify.org/astros.json", gotData);
function gotData(data) {
outerSpace = data;
}
if (outerSpace) {
console.log(outerSpace.people.name);
}
这是完整的 API(不多)。
{
"number": 3,
"message": "success",
"people": [
{
"name": "Peggy Whitson",
"craft": "ISS"
},
{
"name": "Fyodor Yurchikhin",
"craft": "ISS"
},
{
"name": "Jack Fischer",
"craft": "ISS"
}
]
}
console.log 不应该输出“Peggy Whitson”吗?我没有收到任何错误消息,但控制台没有收到任何消息。如果有人可以帮助我找到解决方法,我将不胜感激。谢谢!
【问题讨论】:
-
首先,删除 if 语句,以便查看服务器是否收到 404 或 500 错误:[if (xobj.readyState == 4 && xobj.status == "200") {回调(xobj.responseText); }]
-
另外
people是一个数组,所以不能直接调用people.name。使用outerSpace.people[0].name获取名字。 -
@Abiezer 没有错误信息。
-
@Racil Hilan 仍然没有记录任何内容。
-
我说也是因为这不是主要问题。如果这是主要问题,我会将其发布为答案而不是评论。但是一旦你解决了主要问题,你就会在这一行出现错误,需要修复它。
标签: javascript json