来自WOEID的天气预报(使用YQL或rss)在javascript中?

时间:2012-02-22 21:40:24

标签: javascript jquery yql weather yahoo-api

有没有办法从javascript中获取woeid的天气预报?

我尝试使用雅虎的rss feed,但无法让它工作。这是我的代码

    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"); }
    });

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

这是使用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);
  }
);​

The query in the YQL console...

The JavaScript code in jsfiddle...

答案 1 :(得分:1)

显然,Weather API以RSS格式返回其结果,而您的函数期望它们为jsonp格式。请考虑使用Yahoo! Pipes为您提取天气RSS Feed,处理它,然后以jsonp格式返回。

这是一个类似的管道:

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

答案 2 :(得分:0)

正如龙所说,我创建了一个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 error invalid label