使用getJSON和YQL时出现问题

时间:2011-06-09 18:21:45

标签: jquery json yql

我正在尝试通过YQL在Youtube中获取视频的视图以在我的网站上显示它,我正在使用jQuery的$.getJSON方法来获取YQL调用的结果,我做得很好但是对于成功部分没有解雇的原因,这是我的代码:

$.getJSON("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DrWlHtvZHbZ8%26feature%3Dplayer_embedded%22%20and%0A%20%20%20%20%20%20xpath%3D'%2Fhtml%2Fbody%2Fdiv%2Fdiv%5B3%5D%2Fdiv%2Fdiv%2Fdiv%5B3%5D%2Fdiv%2Fdiv%2Fdiv%5B2%5D%2Fdiv%2Fspan%2Fstrong'&format=json&diagnostics=true&callback=cbfunc",
    function(data) {
        alert('Hello');
    }
);

我在我的firebug的控制台上看到请求已经发出并且它正在返回正确的json对象,但是我的函数中的警报没有触发,我在这里做错了什么?

提前致谢!

3 个答案:

答案 0 :(得分:4)

从URL中删除&callback=cbfunc,因此jQuery可以定义回调本身。

$.getJSON("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DrWlHtvZHbZ8%26feature%3Dplayer_embedded%22%20and%0A%20%20%20%20%20%20xpath%3D'%2Fhtml%2Fbody%2Fdiv%2Fdiv%5B3%5D%2Fdiv%2Fdiv%2Fdiv%5B3%5D%2Fdiv%2Fdiv%2Fdiv%5B2%5D%2Fdiv%2Fspan%2Fstrong'&format=json&diagnostics=true",
    function(data) {
        alert('Hello');
    }
);

http://jsfiddle.net/niklasvh/C5cYB/

答案 1 :(得分:1)

使用jQuery的匿名回调被认为是不好的做法,请参阅YQL博客上的Beware of client-side libraries "helping" you

由于您的原始YQL URL告诉YQL需要一个名为cbfunc的回调函数,因此您需要做的就是在JavaScript中定义该函数(在window范围内)。

function cbfunc(data) {
    alert('Hello');
}

答案 2 :(得分:0)

我对YQL一无所知,但我在该查询字符串的末尾看到了一个显式回调集,这可能是个问题。您是否尝试删除“callback = cbfunc”,或者设置“callback =?”与http://api.jquery.com/jQuery.getJSON/

中的jsonp文档一样