В настоящее время у меня возникают проблемы с использованием 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-сервери передать его браузеру через прокси-сервер. Однако я хотел бы выполнить это, не обременяя мой сервер.
Как это можно сделать?