javascript - 纽约时报的对象阅读以在 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>
我什至尝试将它作为结果和响应放入变量中,但没有运气。我不确定我在这里缺少什么。
解决方案
弄清楚了。问题在于 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 数组的每次迭代中只删除主要标题。我不仅能够清除标题,还能够清除每个标题的相关链接。