- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ライブドアお天気webサービスから取得できない)
ライブドアお天気webサービスから取得できない
このQ&Aのポイント
- 取得できない理由とは?クロスドメインの問題?
- quicca(クイッカ)を使用してウェブサーバーを構築
- $.getJSON関数が通っていない?アラート表示さえされず
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 まさしくクロスドメインの問題だと思います。 外部のドメインは直接読み込めませんので動作していません。 xmlでの提供が行われていたときはyahooのサービスを併用してJSONPで取得する方法もあったようですが、現在はJSONでの提供のみとのことです。 なので一番簡単なのは自サーバに仲介するphp等を設置するのが良いと思います。 ==== PHP <?php $url = 'http://weather.livedoor.com/forecast/webservice/json/v1?city=130010'; 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 + '度' ); }); });
お礼
サーバー管理会社に問い合わせてallow_url_fopenをonにする方法を教えてもらい、 実際に設定したところ想定どおりに動くようになりました。 ありがとうございました。
補足
ありがとうございます。 教えていただいた方法を試してみましたが、コンソールに以下のようなエラーが出ました。 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/json/v1?city=130010) [<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の設定になっているのかも確認できなさそうです。 レンタルしているサーバー管理会社にも一度問い合わせてみます。 ありがとうございました。