javascript - 连接 JSON API 进行解析
问题描述
我正在寻找解析以下页面并提取名称的每个实例。http://api.openparliament.ca/politicians/。
我一直在关注本指南以供参考:https ://www.taniarascia.com/how-to-connect-to-an-api-with-javascript/但是当它运行时,没有任何返回。我究竟做错了什么?
var request = new XMLHttpRequest();
request.open('GET', 'api.openparliament.ca/politicians/?format=json', true);
request.onload = function () {
// Begin accessing JSON data here
var data = JSON.parse(this.response);
if (request.status >= 200 && request.status < 400) {
data.forEach(politicians => {
console.log(politicians.name);
});
} else {
console.log('error');
}
}
request.send();
解决方案
欢迎 Sean 使用 StackOverflow。
好吧,首先你的代码中有一些问题。
- 在此行的 URL 中添加http://
request.open('GET', 'http://api.openparliament.ca/politicians/?format=json', true);
:。 - 你需要等待的
XMLHttpRequest.readyState
是DONE
。在您的代码中,您可以通过以下方式检查 readyState 属性:
if (request.readyState === 4) {
// Code goes here...
}
- 检查是否
XMLHttpRequest
返回了 200 状态码。你可以这样做:
if (request.status === 200) {
// Code goes here...
}
然后使用前面的代码,您可以执行以下操作:
var data = JSON.parse(this.response);
wheredata
是一个对象,它有两个属性:objects
和pagination
whereobjects
是一个对象数组,并且pagination
是一个对象。
然后你可以这样做:
data.objects.forEach(politician => {
console.log(politician.name);
});
这是完整的演示:
(function() {
var request = new XMLHttpRequest();
request.open('GET', 'http://api.openparliament.ca/politicians/?format=json', true);
request.onreadystatechange = function() {
if (request.readyState === 4) {
if (request.status === 200) {
var data = JSON.parse(this.response);
data.objects.forEach(politician => {
console.log(politician.name);
});
} else {
console.log('error');
}
}
}
request.send();
}());
希望这可以帮助。
推荐阅读
- python - UnboundLocalError:分配前引用的局部变量“压缩”:生成器错误
- c# - Umbraco 7:如何获取包含当前内容的内容
- android - 在 Android Kotlin 中查找日期之间的天数差异
- java - 地图
返回地图 > groupingBy value 之后,而不是 Map >> - lua - 在STM32F103中运行LUA抛出错误“unexpected symbol”
- c# - 如何使用 Entity Framework .NET Core 编写带有 where 子句的 SQL 更新查询
- flutter - admob firebase_admob:verifyReleaseResources 错误
- c# - 使用复杂位掩码显示串行项
- python - 当前者的路径设置为系统而后者设置为用户环境变量时,为什么传统的 python 在 cmd 中优先于 anaconda python?
- arrays - 在 awk 中循环删除数组元素:总是安全的?