【发布时间】:2020-06-16 08:13:20
【问题描述】:
我尝试从天气 API 获取天气值,但无法获取城市名称和其他属性。当我尝试将它们推送到数组中时,项目无法将其投影到 HTML 页面
请看下面的代码:
var url = "https://api.weatherbit.io/v2.0/forecast/daily?city=london,gb,&key=f0e406af6ebf4937862f9f50ae78125b";
function getWeather(){
$.getJSON( url, function( data ) {
var items = [];
$.each( data, function( key, val ) {
var weather = {
cityName:val.city_name,
longtitude:val.lon,
timezone:val.timezone,
latitude:val.lat,
countryState:val._state
}
items.push("<li>"+weather+"</li>");
});
$( "<ul/>", {
"class": "my-new-list",
html: items.join( "" )
}).appendTo( "body" );
});
}
【问题讨论】:
-
var weather 是一个 JavaScript 对象。当被 li 标签包围时,它不会创建一个有效的 HTML 元素。
-
您需要通过对象的属性来访问对象,而不是通过尝试将它们连接到字符串或
join()将它们像数组一样。您也不需要循环,因为响应中只返回了一组city_name、lon、lat等。您想在 UI 中显示哪些值? -
您的 API 响应包含单个位置(“伦敦”,如您的 url 参数所述)和多天的天气预报。该数组包含在响应对象的
data属性中(您也将其命名为data,因此您需要遍历data.data)。在数组项中,没有关于城市和州的信息,它位于对象的顶级属性中。 -
我正在尝试显示城市名称、时区和国家/地区,并根据 lon 和 lat 获取天气
-
@GeoD 请查看更新后的答案。这就是你想要的。
标签: javascript html jquery json