我正在尝试使用Hacker News API,我可以调用API并发出获取故事的请求。根据他们的API文档,源URL必须包含访问故事内容的ID(必需),我在控制台中获取正确的URL并单击URL提供适当的JSON但超出此范围我无法使用/调用JSON内容,如作者姓名,职称等。
JS CODE:
var records;
var userRecords;
var fileJson;
var startRequest = new XMLHttpRequest();
var sourceUrl = "https://hacker-news.firebaseio.com/v0/";
var sourceUrlAdd = "showstories.json";
var finalURL = sourceUrl + sourceUrlAdd;
startRequest.open("GET",finalURL);
startRequest.onload = function() {
fileJson = JSON.parse(startRequest.responseText);
for(var i = 0 ; i < fileJson.length; i++) {
userRecords = sourceUrl + fileJson[i] + ".json";
}
}
startRequest.send();
如何让它发挥作用?
答案 0 :(得分:2)
查看以下信息:GitHub
循环中的网址应修改为:
for(var i = 0 ; i < fileJson.length; i++) {
userRecords = sourceUrl + "/item/" + fileJson[i] + ".json";
}
您的代码看起来并不完整,因为如果要存储它们,循环将只覆盖每次迭代的userRecords:
userRecords = [];
for(var i = 0 ; i < fileJson.length; i++) {
userRecords.push(sourceUrl + "/item/" + fileJson[i] + ".json");
}
上面会给你一个填充了所有结果的数组。
例如,这是userRecords数组中第一项的内容:
{"by":"ntrippar"
,"descendants":45
,"id":15853345
,"kids"[15858055,15854752,15856479,15854664,15858253,15856298,15854305,15855332,15858118,15857061,15854116]
,"score":159
,"time":1512494533
,"title":"Show HN: SeKey: An SSH Agent for OS X, Using Secure Enclave and TouchID, in Rust"
,"type":"story"
,"url":"https://github.com/ntrippar/sekey"}
如果您解析上述内容,它将转换为一个对象。