使用带有JSON和脚本标记的Yahoo Weather API



我正在尝试用JavaScript获取雅虎天气。我最初做了一个代理,但发现很笨拙。

因此可以从http://weather.yahooapis.com/forecastjson?w=9807,我知道script标记可以避免相同的域限制,但我遇到了语法错误。

雅虎的JSON响应没有填充;我已经让回调工作了,但浏览器没有正确解释JSON。

我见过很多例子,比如如何使用Jquery ajax读取yahoo天气JSON数据,但这很奇怪,因为所有这些都会给我带来跨域错误。

有人能帮我吗?跨域,雅虎天气,没有特殊的服务器或YQL或类似的东西。一些开箱即用的东西。

如果您期望JSON-P,则需要向查询添加回调函数名。对于jQuery,这始终是?。jQuery将用一个随机生成的函数名代替它:

var query = escape('select item from weather.forecast where location="CAXX0518"'),
    url = "http://query.yahooapis.com/v1/public/yql?q=" + query + "&format=json&callback=?"; 
$.getJSON(url, function(data) {
  console.log( data );
});

如果你想使用yql,这是链接:

http://query.yahooapis.com/v1/public/yql?q=select%20item%20from%20weather.forecast%20where%20location%3D%223015%22&format=json

当您调用它时,只需将其作为jquery中的参数传递即可。因此,在其他使用STeve代码的情况下,您可以简单地用yql链接替换传递到getJSON函数调用中的url,当然也可以替换您想要用于该位置的邮政编码。所以,这是代码:

    $(document).ready(DocReady);
function DocReady()
{
    var Result = $.getJSON("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20location%3D%2233015%22&format=json", "",
    function (data)
    {
        $("body").append("Sunrise: " + data.query.results.channel.astronomy.sunrise + "<br />");
        $("body").append("SuntSet: " + data.query.results.channel.astronomy.sunset + "<br />");
    });
}

以下是您需要更换的部分以获得正确的位置:

在%22的之间输入邮政编码

http://query.yahooapis.com/v1/public/yql?q=select%20*%20来自%20天气预报%20地点%20位置%3D%22

33333

%22&format=json

如果你有任何问题,请告诉我。

下面是一些代码

$(document).ready(DocReady);
function DocReady()
{
    jQuery.support.cors = true;
    var Result = $.getJSON("http://weather.yahooapis.com/forecastjson?w=9807", "",
        function (data)
        {
            $("body").append("Sunrise: " + data.astronomy.sunrise + "<br />");
            $("body").append("SuntSet: " + data.astronomy.sunset + "<br />");
        });
}       

最新更新