我觉得这是一个愚蠢的问题,但我正在尝试学习更多关于使用javascript的API的知识。我正在使用开放天气应用程序的api。
我的项目的一部分将允许用户在表单中键入一个城市,然后api获取当前天气/当前温度等。这部分工作完全正常。
我正在尝试创建一个页面,允许用户在表单中键入一个城市,然后显示未来几天的预测。
它无法识别api中的值。我相信我使用的是网站上的正确文档,如下所示:https://openweathermap.org/forecast16
我正在使用fetch并调用它,但是值是“undefined”,我得到uncaughttypeerror:无法读取undefined的属性“temp”。
以下是url和部分js代码:
const api = `https://api.openweathermap.org/data/2.5/forecast/daily?
q=${input}&cnt=2&lang=en&appid=${myKey}&units=metric`;
populateUI(data) {
this.uiContainer.innerHTML = `
<div class="card mx-auto mt-5" style="width: 18rem;">
<div class="card-body justify-content-center">
<h5 class="card-title">${data.name}</h5>
<p class="card-subtitle mb-2 text-muted">Highs of ${data.list.temp.min}. Lows of
${data.list.temp.max}</p>
<p class="card-text ">Weather conditions are described as:
${data.list.weather.description}</p>
<p class="card-text ">Feels like: ${data.list.feels_like}</p>
<p class="card-text ">Wind speed: ${data.list.humidity} m/s</p>
</div>
</div>
`;
}
如果我将${data.list}放在所有的url中,我会得到401(未经授权),因此我不确定我的url是否错误,但由于文档的原因,它看起来还可以吗?我是否需要为预测生成第二个api密钥,因为我已经拥有站点当前天气部分的api密钥?
1条答案
按热度按时间kqlmhetl1#
根据文档中的示例json结构,
list
是一个对象数组,每个对象都包含以下属性temp
. (看见https://openweathermap.org/forecast16#json)要在代码中访问这些属性,您应该在
data.list
并从每个项目中获取属性。例如: