我不知道这是否是这个问题的地方,但问题是:
我有一个使用 Yahoo Weather API 从巴西各个城市获取天气数据的网络应用程序。基本上,我从这个网站获得了所有 woeid 号码:http ://woeid.rosselliot.co.nz/ 。在获得所有 woeid 号码后,我创建了一个网页,该网页进行 ajax 调用(通过 jQuery)来获取所有天气信息:
var woeid = 455997;
var url_yahoo = "http://weather.yahooapis.com/forecastrss?w=" + woeid + "&u=c";
$.ajax({
url: 'http://ajax.googleapis.com/ajax/services/feed/load?output=xml&v=1.0&callback=?&q=' + encodeURIComponent(url_yahoo),
dataType: 'json',
cache: false,
success: function(data) {
data = $(data.responseData.xmlString).find("item");
var condition_node = $(data).find("yweather\\:condition");
var forecasts_node = {
"today": $(data).find("yweather\\:forecast").eq(0),
"tomorrow": $(data).find("yweather\\:forecast").eq(1),
"after_tomorrow": $(data).find("yweather\\:forecast").eq(2)
}
var temperatures = {
"today": {
"now": condition_node.attr("temp"),
"min": (forecasts_node['today']).attr("low"),
"max": (forecasts_node['today']).attr("high")
},
"tomorrow": {
"min": (forecasts_node['tomorrow']).attr("low"),
"max": (forecasts_node['tomorrow']).attr("high")
},
"after_tomorrow": {
"min": (forecasts_node['after_tomorrow']).attr("low"),
"max": (forecasts_node['after_tomorrow']).attr("high")
}
}
console.log( temperatures['today'] );
}
})
上面的示例可以获取各个城市的所有温度。我需要做的就是更改具有相同名称的变量上的 WOEID 编号。WOEID 编号为 455997 的城市是 Sobral - CE - Brazil。基本上,这个 ajax 调用将打开 URL“weather.yahooapis.com/forecastrss?w={WOEID_NUMBER}&u=c”,从生成的 XML 文件中提取所有信息,并在浏览器的控制台上显示所有温度,如下所示:
Object {now: 38, min: 25, max: 32}
去年运行良好,所有温度都显示在“温度”数组变量中。但大约两个月前,它停止工作,在所有索引上返回“未定义”。
Object {now: undefined, min: undefined, max: undefined}
出于调试目的,我尝试了 ajax 加载的 url ( http://weather.yahooapis.com/forecastrss?w=455997&u=c )。雅虎应该向我返回与 Sobral - CE - Brazil 相关的所有预测信息,但它会返回以下 XML:
<rss xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" version="2.0">
<channel>
<title>Yahoo! Weather - Error</title>
<description>Yahoo! Weather Error</description>
<item>
<title>City not found</title>
<description>Weather Data not Available at the moment</description>
</item>
</channel>
</rss>
因此,我的 web 应用程序无法获取与我的城市相关的任何天气信息。同样的问题也发生在巴西的其他城市,例如:
Sobral, Ceara, Brazil - WOEID 455997
Tianguá, Ceara, Brazil - WOEID 453622
São Benedito, Ceará, Brazil - WOEID 449511
Ubajara, Ceara, Brazil - WOEID 454340
Viçosa, Ceara, Brazil - WOEID 461578
Guaraciaba do Norte, Ceara, Brazil - WOEID 452761
供您参考,iOS 5 的天气应用程序也发生了同样的问题。它无法显示有关上述某些城市的信息,几个月前它运行良好。
我找不到有关此问题的任何最新信息。我不知道这是否是暂时的,或者这是否意味着该服务将在未来停止。有人和我有同样的问题吗?