繁体   English   中英

如何从离线访问在线JSON文件? (JavaScript的)

[英]How can I access an online JSON file from offline? (javascript)

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

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

<apikey>是我放置API密钥的地方, $ character只是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文件夹和其他“Web文件”。 有没有其他方法可以做到这一点,还是我必须制作一个Web服务器? 这个项目即将到期,所以任何帮助表示赞赏!

是的,您可以使用JSONP

我不确定Wunderground Weather API是否在JSON中有某种回调。 但如果他们甚至做jQuery getJSON支持JSONP。

好像你遇到了同源政策

这是您在原始帖子中提供的链接的代码示例( 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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM