从API接口获取日出日落值遇到层级访问问题求助
解决你的日出日落API数据获取问题
首先咱们得先揪出问题根源:你调用的这个API返回的是JSON对象,不是数组,所以你用for (var i = 0; i < data.length; i++)这种数组循环的方式完全行不通——对象根本没有length属性,循环直接就跳过了,自然看不到任何效果。
先给你看看这个API返回的简化数据结构,你就能明白层级关系了:
{ "results": { "sunrise": "6:02:42 AM", "sunset": "5:49:45 PM", // 其他无关字段省略 }, "status": "OK" }
你要的日出、日落值,都藏在data.results这个子对象里,根本不需要循环,直接访问就行。
下面是修正后的完整代码,你可以直接用:
$.getJSON('https://api.sunrise-sunset.org/json?lat=35.857368&lng=14.477653', function (data) { // 先确认API请求成功(status为OK) if (data.status === "OK") { const sunrise = data.results.sunrise; const sunset = data.results.sunset; // 把时间插入表格的逻辑,补全你没写完的部分 const tr = $('<tr/>'); tr.append(`<td>${sunrise}</td>`); tr.append(`<td>${sunset}</td>`); // 记得把生成的行添加到你的表格中,比如下面这行(替换成你实际的表格选择器) $('table').append(tr); } else { console.log("API请求失败:", data.status); } });
几个关键的修正点:
- 去掉了毫无意义的数组循环,直接通过
data.results.sunrise/data.results.sunset获取目标值 - 增加了请求状态判断,避免API返回错误时出现意外报错
- 用模板字符串优化了HTML拼接的写法,更简洁易读
如果还是没效果,你可以打开浏览器开发者工具(按F12),看Console面板有没有报错,或者Network面板里查看API返回的具体数据,这样能更快排查问题。
内容的提问来源于stack exchange,提问作者Rene Zammit
相关产品推荐
相关产品推荐

