Прогноз погоды от WOEID (с использованием YQL или rss) в javascript?

Есть ли способ получить прогноз погоды от woeid в javascript?

Я пытался использовать rss-канал Yahoo, но не смог заставить его работать. вот мой код

    var url = "http://weather.yahooapis.com/forecastrss?w=" + encodeURIComponent('WOEID here');

    $.ajax({
        url: url,
        dataType: 'jsonp',
        jsonpCallback: function(data) { console.log(data); },
        success: function(data) { alert("success"); }
    });

Какие-либо предложения?


person Sujit    schedule 22.02.2012    source источник


Ответы (3)


Вот самый простой способ получить нужную информацию с помощью jQuery и YQL:

var woeid = "26355493";

var $url = "http://query.yahooapis.com/v1/public/yql?callback=?";

$.getJSON($url, {
    q: "select * from xml where url=" +
       "\"http://weather.yahooapis.com/forecastrss?w=" + woeid + "\"",
    format: "json"
  }, function (data) {
    console.log(data.query.results.rss.channel);
  }
);​

Запрос в консоли YQL...

Код JavaScript в jsfiddle...

person hippietrail    schedule 28.02.2012
comment
Это не возвращает полную информацию о погоде. Как вы можете получить данные о влажности, атмосфере и т. д.? - person Sujit; 15.03.2012
comment
ОК, я обновил код для вывода всех данных в консоль отладки. Ссылки YQL и jsfiddle также обновлены. Внося эти изменения, я обнаружил, что select * from rss на самом деле возвращает только подмножество данных по сравнению с select * from xml, поэтому я изменил и это. - person hippietrail; 15.03.2012
comment
Отлично! действительно помог мне решить проблему быстро. мой голос +1 - person imdadhusen; 26.11.2014

По-видимому, Weather API возвращает результаты в формате RSS, а ваша функция ожидает их в формате jsonp. Рассмотрите возможность использования Yahoo! Pipes для получения RSS данных о погоде для вас, их обработки и возврата в формате jsonp.

Вот труба, которая делает что-то подобное:

http://pipes.yahoo.com/pipes/pipe.info?_id=4d160cd8ed9d6d78164213928a51507d

person dragon    schedule 22.02.2012

Как предложил дракон, я создал Yahoo Pipe — вот мой полный код; URL-адрес в коде — это Yahoo Pipe, которую я создал.

$(function(){
   var url = "http://pipes.yahoo.com/pipes/pipe.run?_id=e33143abd20b19a0173b3a4b479fa4d3&_render=json&w=YOURWOEIDHERE";

   function createRequest() {
       try { return new XMLHttpRequest(); } catch(e) {}
       try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
       return null;
   }
   var request = createRequest();
   request.open("GET", url, true);
   request.onreadystatechange = callback;
   request.send(null);

   function callback() {
       if(request.readyState != 4) { return }
       Obj = $.parseJSON(request.responseText);
       console.log(Obj);
   }
});

ссылки:
Yahoo Pipe: http://pipes.yahoo.com/pipes/pipe.info?_id=e33143abd20b19a0173b3a4b479fa4d3
jQuery 1.5 - Недопустимая метка ошибки JSON

person Sujit    schedule 23.02.2012