プロが教えるわが家の防犯対策術!

ライブドアのお天気ウェブサービスから、以下のコードで天気データを取得しようとしていますが、
取得できません。
何が間違っているのでしょうか?

クロスドメインの問題?とかいろいろ調べてみましたが、解決に至っていません。

ちなみに、実行すると、alert("アラート");も表示されないため、$.getJSONの関数自体が通っていないみたいです。

ウェブサーバーは、quicca(クイッカ)という所をレンタルし、そこにソースを置いています。

$(document).ready( function() {
   var weather = ""; // 天気
   var temp = ""; // 最高気温
   var wetherURL = 'http://weather.livedoor.com/forecast/webservice/ …
   $.getJSON(wetherURL, function(json){
      alert("アラート");
      weather = json.value.items[0].forecasts[0].telop;
      temp = json.value.items[0].forecasts[0].temperature.max.celsius;

      alert(weather);

   });
});

A 回答 (1件)

こんにちは。



まさしくクロスドメインの問題だと思います。
外部のドメインは直接読み込めませんので動作していません。

xmlでの提供が行われていたときはyahooのサービスを併用してJSONPで取得する方法もあったようですが、現在はJSONでの提供のみとのことです。

なので一番簡単なのは自サーバに仲介するphp等を設置するのが良いと思います。


==== PHP
<?php

$url = 'http://weather.livedoor.com/forecast/webservice/ …
header ( 'Content-Type: application/json; charset=utf-8' );
echo file_get_contents ( $url );
?>


==== JavaScript(少し修正しました)
$(document).ready( function() {
var weather = ""; // 天気
var temp = ""; // 最高気温
var weatherURL = 'weather.php';
$.getJSON(weatherURL, function(json){
console.debug ( json );
weather = json.forecasts[0].telop;
temp = json.forecasts[0].temperature.max.celsius;
alert ( weather + ',' + temp + '度' );
});
});

この回答への補足

ありがとうございます。

教えていただいた方法を試してみましたが、コンソールに以下のようなエラーが出ました。


file_get_contents() [<a href='function.file-get-contents'>function.file-get-contents</a>]: http:// wrapper is disabled in the server configuration by allow_url_fopen=0 in

<b>Warning</b>: file_get_contents(http://weather.livedoor.com/forecast/webservice/ … [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: no suitable wrapper could be found in


少し調べてみたところ、allow_url_fopenの設定をonにしなければならないようですが、
レンタルサーバーなので変更できるのか微妙です。
管理画面から探してみましたが、allow_url_fopenは変更できなさそうでした。。
今現在、onなのかoffの設定になっているのかも確認できなさそうです。


レンタルしているサーバー管理会社にも一度問い合わせてみます。

ありがとうございました。

補足日時:2013/07/22 19:14
    • good
    • 0
この回答へのお礼

サーバー管理会社に問い合わせてallow_url_fopenをonにする方法を教えてもらい、
実際に設定したところ想定どおりに動くようになりました。

ありがとうございました。

お礼日時:2013/07/23 15:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!