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

如何从OpenWeatherMap API获取法语天气描述?代码报错求助

排查OpenWeatherMap API法语天气描述的未定义错误

嘿,我看到你卡在获取法语天气描述的问题上了,咱们来一步步理清问题所在~

核心错误原因

你遇到的TypeError: data.weather.description is undefined,本质是对API返回数据结构的访问逻辑错了。OpenWeatherMap接口返回的weather字段是一个数组(毕竟天气可能同时存在多种状况,比如多云+小雨),而不是单个对象。你现在写的data.weather.description[0]是试图直接访问数组的description属性——这显然不存在,正确的姿势是先取数组里的第一个元素,再访问它的description属性。

修正后的关键代码

把出错的那一行:

setText('label4',data.weather.description[0]);

改成:

setText('label4',data.weather[0].description);

额外的优化建议

  1. 你已经用console.log(data)打印了返回数据,建议在浏览器控制台仔细查看weather字段的结构,确认它是数组类型,每个元素包含description、main等属性,这样能更直观理解数据结构。
  2. 检查下URL拼接里的&——在JavaScript字符串中,直接用&就可以,不需要HTML转义后的&,虽然部分环境能自动处理,但改成标准写法更稳妥:
    var urlBase = "http://api.openweathermap.org/data/2.5/weather?id=";
    var apiKey = "&appid=xxx";
    var unitsParam = "&units=metric";
    var language = "&lang=fr";
    var url = urlBase + cityCode + unitsParam + language + apiKey ;
    
  3. 可以加个简单的容错判断,避免极端情况下(比如API返回的weather数组为空)再次报错:
    if (data.weather && data.weather.length > 0) {
        setText('label4', data.weather[0].description);
    } else {
        setText('label4', '暂无天气描述');
    }
    

内容的提问来源于stack exchange,提问作者lexybb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 12:07:42