有没有办法从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"); }
});
有什么建议吗?
答案 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);
}
);
答案 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