1

Wunderground Weather APIを使用して、学校のプロジェクト用に天気予報の Web サイトを作成しています。これは、JSON データを取得するために使用しているコードです。

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

ここ<apikey>に API キーを置きます$。文字は JQuery の単なるショートカットです。

公開されていないローカルのこの Web ページを開くと、アラートは表示されず、次のエラーが表示されます。

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 サーバーを作成する必要がありますか? このプロジェクトはまもなく締め切られるので、どんな助けも大歓迎です!

4

2 に答える 2

3

はい、これにはJSONPを使用できます。

Wunderground Weather APIが JSON に何らかのコールバックを持っているかどうかはわかりません。ただし、jQuery でさえgetJSONJSONP をサポートする場合。

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 に答える