【发布时间】:2018-12-03 07:19:03
【问题描述】:
例如,我正在使用 fetch api 从 NY Times api 中获取数据。在响应内部,有一个名为“Multimedia”的对象,其中包含图像。我创建了一个模板文字来获取必要的数据,但似乎无法获取任何图像。DEMO ON CODEPEN 这是我的代码:
const div = document.getElementById('article'),
url = "https://api.nytimes.com/svc/topstories/v2/home.json?api-key=fd168d666e644fe29bbb534d757b374e";
fetch(url)
.then((response) => {return response.json(); })
.then(data => {
let article = data.results;
console.log(article);
return article.map(user => {
let output = '<div class="container">';
article.forEach(user => {
output += `
<article>
<img src="${user.multimedia.url}">
<h2>${user.title}</h2>
<span class="author"><b>Author:</b> ${user.byline} | <b>Category: </b>${user.section}</span>
<p>${user.abstract}</p>
<a class="btn" href="${user.url}" target="_blank">View Article</a>
</article>
`
});
document.getElementById('article').innerHTML = output;
})
})
.catch( error => { console.log(error); })
%body
#article
我尝试使用 user.multimedia.url 访问图像,但似乎无法提取图像。任何关于为什么我无法完成这项工作的帮助或解释将不胜感激。谢谢!
【问题讨论】:
-
看起来 user.multimedia 是一个对象数组,而不仅仅是一个值。您需要遍历数组或按索引选择所需的项目。这是一个使用数组中第一个图像的快速示例 - codepen.io/anon/pen/qKKGBy?editors=1010
-
似乎变量
user与 Map 一起在 forEach 中使用,所以尝试更改变量名称。 -
@BrettGregson 非常感谢您的完美工作!
-
谢谢@ThomasBrushel。我也将它作为答案发布给将来在这篇文章中结束的任何人
标签: javascript json xmlhttprequest fetch-api