использовать API погоды Google с MooTools - PullRequest
2 голосов
/ 13 ноября 2011

В настоящее время у меня возникают проблемы с использованием API погоды Google в JavaScript с использованием Mootools.

Я использую код, подобный следующему:

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();   

Этот код приводит к ошибке браузера, о которой сообщаетсяв Firebug как:

"NetworkError: 405 Method Not Allowed - http://www.google.com/ig/api?weather=72601&location=72601"

Из того, что я могу собрать (я довольно нов в этом), эта проблема вызвана нарушением междоменного доступа.

Я пытался:

1) использование 'post' вместо 'get' для метода ... аналогичный результат

2) использование Request.HTML и Request.JSON вместо Request ... аналогичный результат

3) использование Request.JSONP ... другая ошибка (думаю, форматирование документа).Я подозреваю, что это связано с тем, что API погоды Google возвращает прямой XML и не настроен для обслуживания JSONP.

4) с использованием YQL вместо прямого URL-адреса Google (пример 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 Ответ

1 голос
/ 13 ноября 2011

Это междоменная проблема. Придерживайтесь решения, которое у вас есть (прокси). Браузеру не разрешено делать запрос на «google.com», если фактическая страница находится на «yourdomain.com».

...