ライブドアのお天気ウェブサービスから、以下のコードで天気データを取得しようとしていますが、
取得できません。
何が間違っているのでしょうか?
クロスドメインの問題?とかいろいろ調べてみましたが、解決に至っていません。
ちなみに、実行すると、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);
});
});
No.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の設定になっているのかも確認できなさそうです。
レンタルしているサーバー管理会社にも一度問い合わせてみます。
ありがとうございました。
サーバー管理会社に問い合わせてallow_url_fopenをonにする方法を教えてもらい、
実際に設定したところ想定どおりに動くようになりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- オープンソース Coinmarketcap api 1 2022/05/30 15:47
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript gasについて 1 2022/05/31 21:51
- 英語 ヨーロッパの天気は良いですか?って聞きたい時に Is the good weather in Eur 1 2022/08/19 17:21
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- JavaScript WordPressのコンタクトフォーム7にて送信者の位置情報を送らせたい 2 2022/09/14 23:28
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
初心者です。gulpでコンパイル...
-
階層別の組織図の自動作成について
-
React hooksが値を返して配列変...
-
特定の文字列を複数抜き出した...
-
追加ボタンを押した際に ok ボ...
-
ジャバスクリプトについて。
-
GASでGoogleフォームの自動返信...
-
フロントエンドフレームワーク...
-
画面遷移を行わずに同一ページ...
-
セレクトを全て選択されていな...
-
ブックマークレットについて
-
①入力フォーム→②確認表示画面→③...
-
プログラムについて。
-
Q&A掲示板の入力フォームに文字...
-
メールフォームの日付入力フォ...
-
二次元配列を使って順位をだす...
-
iOSのみダブルタップが必要
-
jsで質問です。 displayプロパ...
-
var exports = exports || {}; ...
-
HTMLタグに複数のクラスを設定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
http上でrequest されたxmlファ...
-
テキストファイルの内容を変数...
-
json形式データのデータ連携に...
-
jsonテキストデータの並び替え...
-
【JavaScript】confirmのボタン...
-
非同期通信を使うタイミングが...
-
DirectXとOpenGLはどちらが動作...
-
HTMLでDBからデータを表形式で...
-
saved from url=(0013)abou
-
リンクを押すとEXEファイルを実...
-
ASP.NET(VB)VBソースからJavas...
-
Javadcriptでwebサーバー側にあ...
-
カーソルの動きに合わせてDBか...
-
Ajaxでpostした内容のresponse...
-
[JavaScript] preven...
-
jQueryのAjaxで通信の途中結果...
-
php ob_flushが全く動作しない
-
webシステムでchrome
-
ローカル用HTMLファイルの安全...
-
JQuery サーバー上にアップする...
おすすめ情報