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

使用带有JSON和脚本标记的Yahoo Weather API,json,cross-domain,weather,yahoo-api,Json,Cross Domain,Weather,Yahoo Api,我正在尝试用JavaScript获取雅虎天气。我最初做了一个代理,但发现很笨拙 所以我可以从中获得JSON响应,我知道脚本标记可以避免相同的域限制,但是我得到了一个语法错误 雅虎的JSON响应没有填充;我已经让回调正常工作了,但是浏览器没有正确解释JSON 我见过很多这样的例子,但这很奇怪,因为所有这些都给了我跨域错误 有人能帮我吗?跨域,yahoo weather,没有特殊服务器或YQL之类的东西。一些开箱即用的东西。下面是一些代码 $(document).ready(DocReady);

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

所以我可以从中获得JSON响应,我知道脚本标记可以避免相同的域限制,但是我得到了一个语法错误

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

我见过很多这样的例子,但这很奇怪,因为所有这些都给了我跨域错误

有人能帮我吗?跨域,yahoo weather,没有特殊服务器或YQL之类的东西。一些开箱即用的东西。

下面是一些代码

$(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 />");
        });

}       
$(document).ready(DocReady);
函数DocReady()
{
jQuery.support.cors=true;
变量结果=$.getJSON(“http://weather.yahooapis.com/forecastjson?w=9807", "",
功能(数据)
{
$(“正文”)。追加(“日出:+data.astronomy.Sunrise+”
); $(“正文”)。追加(“SuntSet:+data.astronomy.sunset+”
); }); }
如果您想使用yql,以下是链接:

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

    $(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 />");
    });

}
$(document).ready(DocReady);
函数DocReady()
{
变量结果=$.getJSON(“http://query.yahooapis.com/v1/public/yql?q=select%20*%20来自%20天气预报%20其中%20位置%3D%2233015%22&format=json“,”,
功能(数据)
{
$(“body”).append(“Sunrise:+data.query.results.channel.astronomy.Sunrise+”
); $(“body”).append(“SuntSet:+data.query.results.channel.astronomy.sunset+”
); }); }
以下是您需要更换的部分,以获得正确的位置:

输入两个%22之间的邮政编码

*%20来自%20天气。预测%20其中%20位置%3D%22

33333

%22&format=json


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

如果您期望的是
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作为一种可能性。好的,谢谢你的投票,很高兴你得到了你想要的答案。对我来说,
$
在Chrome上没有定义。。ala
未捕获引用错误:$未定义
是否忘记加载jQuery: