1

我正在使用Wunderground Weather API为我的学校项目制作一个天气网站。这是我用来获取 JSON 数据的代码:

$.getJSON("http://api.wunderground.com/api/<apikey>/conditions/q/" + wlocation + ".json", function(data){
    alert(data);
});

<apikey>是我放置 API 密钥的地方,而$字符只是 JQuery 的快捷方式。

当我打开此网页时,它是本地的,未发布,没有弹出警报,我收到错误:

XMLHttpRequest cannot load http://api.wunderground.com/api/<apikey>/conditions/q/<myzipcode>.json. Origin null is not allowed by Access-Control-Allow-Origin. 

在对此错误进行了一些研究之后,听起来我可能必须创建一个 Web 服务器。但是,对于该项目,我们需要将其作为 .html 和其他“网络文件”的文件夹。还有其他方法可以做到这一点还是我必须制作一个网络服务器?该项目即将到期,因此非常感谢您的帮助!

4

2 回答 2

3

是的,您可以为此使用JSONP 。

我不确定Wunderground Weather API是否在 JSON 中有某种回调。但如果他们这样做,即使 jQuery 也getJSON支持 JSONP。

好像您遇到了Same origin policy

于 2013-06-09T14:22:06.463 回答
1

这是您在原始帖子 ( http://www.wunderground.com/weather/api/d/docs?d=resources/code-samples ) 中提供的链接中的代码示例。他们使用 JSONP。是的,正如@antyrat 所说,这是一个 CORS 问题。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script>
jQuery(document).ready(function($) {
  $.ajax({
      url : "http://api.wunderground.com/api/Your_Key/geolookup/conditions/q/IA/Cedar_Rapids.json",
      dataType : "jsonp",
      success : function(parsed_json) {
          var location = parsed_json['location']['city'];
          var temp_f = parsed_json['current_observation']['temp_f'];
          alert("Current temperature in " + location + " is: " + temp_f);
      }
  });
});
</script>
于 2013-06-09T14:36:00.610 回答