首页 > 解决方案 > 纽约时报的对象阅读以在 HTML 中绘制文章表

问题描述

我有一个完美的查询来提供来自 NYT API 的 2017 年至 2018 年的 NFL 文章列表。

var url = "https://api.nytimes.com/svc/search/v2/articlesearch.json";
url += '?' + $.param({
    'api-key': "XXXXXXXXXXXXX",
    'q': "NFL",
    'begin_date': "20180101",
    'end_date': "20181101",
    'sort': "newest",
    'fl': "headline",
    'facet_field': "article"
});

$.ajax({
    url: url,
    method: 'GET',
}).done(function(result) {
    console.log(result);
}).fail(function(err) {
    throw err;
});

我尝试安慰“results.docs[x].headline.main”,以获取标题列表,但它会引发错误。

最终想要的结果如下

<div>
    <p>headline 1: "Phillies win again"</p>
    <p>headline 2: "New Quarter Back for Dolphins"</p>
    <p>headline 3: "NY Giants go up for sale"</p>
    <p>headline 4: "Running back trips over hotdog"</p>
</div>

我什至尝试将它作为结果和响应放入变量中,但没有运气。我不确定我在这里缺少什么。

标签: javascriptjqueryapi

解决方案


弄清楚了。问题在于 JSON 结果的解码方式。

function buildQueryURL() {
var queryURL = "https://api.nytimes.com/svc/search/v2/articlesearch.json?";
var queryParams = { "api-key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" };
queryParams.q = "NFL";
queryParams.begin_date = "20170101";
queryParams.end_date = "20180101";
return queryURL + $.param(queryParams);
}
function updatePage(NFLNews) {
var numArticles = 3

for (var i = 0; i < numArticles; i++) {
var article = NFLNews.response.docs[i];
var headline = article.headline;
console.log(headline.main)
var headlinelink = article.web_url;
console.log(headlinelink)
}
}

var queryURL = buildQueryURL();
$.ajax({
url: queryURL,
method: "GET"
}).then(updatePage);

我必须声明并加入每一层结果,以便从 docs 数组的每次迭代中只删除主要标题。我不仅能够清除标题,还能够清除每个标题的相关链接。


推荐阅读