現在、Mootoolsを使用してJavaScriptでGoogle天気APIを使用することは困難です。mootoolsでgoogle weather apiを使用する
私はこのようなコードを使用しています:として、Firebugので報告されたブラウザのエラーで
var location = $('weather-location').value;
var req = new Request({
url: 'http://www.google.com/ig/api?weather=' + location,
method: 'get',
onSuccess: function(responseText, responseXML)
{
responseXML.getElements('forecast_information').each(function(item)
{
item.getElements('city').each(function(city_data)
{
$('placename').set('html','Weather for ' + city_data.get('data'));
});
});
}
}).send();
このコードの結果を:私は集めることができるものから、
"NetworkError: 405 Method Not Allowed - http://www.google.com/ig/api?weather=72601&location=72601"
(私は、かなり新しいですこれは)、この問題はドメイン間のアクセス違反が原因です。
私が試してみました:
1)の代わりに要求するのではなく、Request.HTMLとRequest.JSONを用いた方法...同様の結果
2)のための '取得' の 'ポスト' を使用して...同様の結果
3)Request.JSONPを使用して...別のエラー(ドキュメントの書式設定と思います)。 Google天気APIがストレートXMLを返し、JSONPを提供するように設定されていないためです。
4)Googleに直接URL(例:URL:http://query.yahooapis.com/v1/public/yql?q=select%20 *%20from%20xml%20where%20url%3D "http%3A%2F%2Fwww.google.com%2Fig%2Fapi%3Fweather% 3DDenver%2520CO ")...これにはエラーはありませんでしたが、結果も返されませんでした(ブラウザのアドレスに入力するとURLが機能します)。
これを動作させる唯一の方法は、天気のXMLサーバー側をプルして、プロキシ経由でブラウザに提供することです。しかし、私はサーバーに負担をかけずにこれを達成したいと思っています。
どうすればいいですか?
+1。 YQLを使用することは、他のものと同じくらい良い解決策です - 私のRequest.YQL拡張を使用する:http://jsfiddle.net/oskar/dSDG8/ –
ここでは良くありません。 Googleはrobots.txtを使ってボットを許可しません。そして、yqlはそれを尊重します。 –