-1

浏览完这个网站,发现可以使用forecastjson获取JSON格式的Yahoo天气。

当我运行时:

$.getJSON("http://weather.yahooapis.com/forecastjson?w=2112762724", function(data){
    ...
});

我收到以下错误:

XMLHttpRequest cannot load http://weather.yahooapis.com/forecastjson?w=2112762724. Origin null is not allowed by Access-Control-Allow-Origin.

我以前遇到过这个错误,但这通常是因为我正在尝试加载 XML 跨域,但这显然是 JSON。如果您转到 getJSON 函数中的链接,它会显示 JSON 数据。有谁知道我为什么会收到这个错误?

谢谢

4

1 回答 1

2

使用JSON不代表不会遇到跨域问题。那是一个对象标准。

如果要进行跨域请求,则应使用JSONP

您尝试请求的 url 不支持 JSONP 请求。但是您可以使用 YQL 来代替。

这是一个例子,

var query = escape('select item from weather.forecast where woeid="2295424"');
var url = "http://query.yahooapis.com/v1/public/yql?q=" + query + "&format=json&callback=c"; 

$.getJSON(url, function(data) {
   console.log(data);
});​

这是您可以检查 json 结果的URL 。

演示

于 2012-04-29T21:43:18.393 回答