0

我正在尝试使用 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();

我如何使它工作?

4

1 回答 1

2

在看资料:GitHub

您在循环中的 URL 应修改为:

    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"}

如果您解析上述内容,它将转换为一个对象。

于 2017-12-06T07:12:52.973 回答