You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:06:35