2011-11-13 11 views
2

現在、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

これはドメイン間の問題です。あなたが持っているソリューション(プロキシ)に固執する。実際のページが「yourdomain.com」にある場合、ブラウザは「google.com」へのリクエストを許可されません。

+0

+1。 YQLを使用することは、他のものと同じくらい良い解決策です - 私のRequest.YQL拡張を使用する:http://jsfiddle.net/oskar/dSDG8/ –

+0

ここでは良くありません。 Googleはrobots.txtを使ってボットを許可しません。そして、yqlはそれを尊重します。 –

関連する問題