2012-02-22 67 views
2

有沒有什麼方法從javascript中獲取天氣預報?在javascript中使用WOEID(使用YQL或rss)的天氣預報?

我嘗試使用雅虎的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"); } 
    }); 

有什麼建議嗎?

回答

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...

+0

這不會返回完整的天氣信息。你怎麼能得到溼度,大氣數據等? – Sujit 2012-03-14 20:01:05

+0

好的,我更新了代碼,將所有數據輸出到調試控制檯。 YQL和jsfiddle鏈接也被更新。在進行這些更改時,我發現'select * from rss'實際上只返回了一部分數據,而'select * from xml',所以我也改變了。 – hippietrail 2012-03-14 20:21:42

+1

感謝它的工作。你的解決方案比我的更好...... :) – Sujit 2012-03-14 20:57:52

0

至於龍的建議,我創建了雅虎管道 - 這是我的完整代碼;代碼中的網址是我創建的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); 
    } 
}); 

引用:
雅虎管:http://pipes.yahoo.com/pipes/pipe.info?_id=e33143abd20b19a0173b3a4b479fa4d3
jQuery 1.5 - JSON error invalid label