Прогноза за времето от 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

Очевидно API за времето връща своите резултати във формат RSS, докато вашата функция ги очаква във формат jsonp. Обмислете използването на Yahoo! Канали за извличане на метеорологичната RSS емисия за вас, обработката и връщането й във jsonp формат.

Ето канал, който прави нещо подобно:

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

person dragon    schedule 22.02.2012

Както dragon предложи, създадох 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