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

我的天气API应用AJAX代码无法拉取数据,问题出在哪?

排查OpenWeatherMap AJAX数据拉取失败的问题

嘿,我帮你梳理了下你的AJAX代码,发现几个明显的问题,咱们一步步来修复:

主要问题点及修复方案

  • 变量名不匹配:你定义的getID函数接收的参数是searchdata,但在AJAX请求的URL里却用了cityName——这个变量在getID函数里根本没定义,浏览器肯定会报错!把URL里的cityName换成searchdata就好。
  • URL参数格式错误:
    • 你写的&&是HTML转义字符,直接写在JS里会被当成字符串的一部分,接口根本识别不了,得改成标准的&来分隔参数;
    • 另外q参数的格式是q=城市名,国家代码,修正变量后要确保这个参数格式正确。
  • 多余的请求参数:你已经通过URL的q参数传递了城市名,AJAX配置里的data: { search: searchdata }完全是多余的,而且OpenWeatherMap的接口也不接受这个参数,直接删掉就行。
  • JSONP的可选性:现在OpenWeatherMap的API已经支持CORS了,你可以直接用dataType: "json",没必要用JSONP;当然如果你的开发环境有特殊跨域限制,JSONP也能凑合用,但优先推荐用JSON。

修正后的代码

$("#sl").click(function() { 
  var city = $("#cityName").val(); 
  console.log(city); 
  getID(city); 
});

function getID(searchdata) {
  $.ajax({
    // 用模板字符串写URL更清晰,也避免拼接错误
    url: `http://api.openweathermap.org/data/2.5/weather?q=${searchdata},ca&appid=76e0a92437b70a4f70ae9ddc7132491e`,
    dataType: "json",
    success: function(cityID) { 
      getinf(cityID); 
      console.log(cityID); 
    },
    // 加个错误回调,方便排查问题
    error: function(xhr, status, error) {
      console.log("请求出错啦:", status, error);
      console.log("服务器返回内容:", xhr.responseText);
    }
  })
}

额外排查建议

  • 先确认你的API密钥是否有效,有没有在OpenWeatherMap的后台正确激活;
  • 输入的城市名尽量用英文(OpenWeatherMap对中文城市名支持有限),拼写一定要准确;
  • 打开浏览器开发者工具(按F12),切换到「Network」标签,看看请求的状态码:401代表密钥无效,404代表找不到对应城市,这些信息能帮你快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:42:56