2011-06-09 71 views
1

我想通過YQL在Youtube上獲取視頻的視圖,以便在我的網站上顯示它,我使用jQuery的$.getJSON方法來獲得YQL調用的結果,但我做得很好但出於某些原因,成功的部分不點火,這裏是我的代碼:使用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對象,但在我的函數的警報不觸發,我在這裏做錯了什麼?

在此先感謝!

回答

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/

+0

不錯,謝謝修復它 – javiervd 2011-06-09 18:30:01

0

我一無所知YQL,但我看到一個明確的回調設定在查詢字符串,這可能是一個問題的結束。您是否嘗試刪除「callback = cbfunc」,或將「callback =?」如在jsonp文檔http://api.jquery.com/jQuery.getJSON/

1

使用jQuery的匿名回調被認爲是不好的做法,請參閱YQL博客上的Beware of client-side libraries "helping" you。由於您的原始YQL網址告訴YQL期待一個名爲cbfunc的回調函數,那麼您所需要做的就是在JavaScript中定義該函數(在window範圍內)。

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