使用oembed嵌入youtube视频

时间:2011-08-19 15:46:40

标签: javascript jquery json youtube oembed

我想使用oembed从youtube链接获取jQuery的嵌入代码:

var url = "http://www.youtube.com/watch?v=iwGFalTRHDA";
url = encodeURIComponent(url);

$.getJSON('http://youtube.com/oembed?url='+url+'&format=json', function(data) {
console.log(data);
});

好吧,我没有得到任何数据。

有趣的是,如果我浏览到网址,我会得到正确的答案:

http://www.youtube.com/oembed?url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DiwGFalTRHDA&format=json` 

引导我

{
provider_url: "http://www.youtube.com/"
title: "Trololo"
html: "<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/iwGFalTRHDA?version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/iwGFalTRHDA?version=3" type="application/x-shockwave-flash" width="425" height="344" allowscriptaccess="always" allowfullscreen="true"></embed></object>"
author_name: "KamoKatt"
height: 344
thumbnail_width: 480
width: 425
version: "1.0"
author_url: "http://www.youtube.com/user/KamoKatt"
provider_name: "YouTube"
thumbnail_url: "http://i2.ytimg.com/vi/iwGFalTRHDA/hqdefault.jpg"
type: "video"
thumbnail_height: 360
}

我还使用了jquery oembed插件,但是如果请求成功,也会抛出onError选项。

我真的很期待一些想法...

5 个答案:

答案 0 :(得分:6)

实际上,问题是您违反了具有跨域ajax请求的浏览器相同原始策略。有一些工作潜在的工作 - 不幸的是最好的JSONP, isn't implemented by YouTube。接下来最好的是使用Flash进行传输。这由YUI-IO utility使用。您也可以看到Jquery suggestions here

答案 1 :(得分:0)

如果我将原始控制网址嵌入到oembed网址中,我就可以获得json数据。我猜测通过在地址栏中键入编码版本无论如何都会进行解码,所以请尝试发送原始版本:

http://youtube.com/oembed?url=http://www.youtube.com/watch?v=iwGFalTRHDA&format=json

答案 2 :(得分:0)

使用json-c版本:https://developers.google.com/youtube/2.0/developers_guide_jsonc

    var id = "iwGFalTRHDA";
    $.ajax({
        url: "https://gdata.youtube.com/feeds/api/videos/" + id + "?v=2&alt=jsonc",
        dataType: "jsonp",
        success: function (data) {
            console.log(data);
        }
    });

答案 3 :(得分:0)

我遇到了类似的问题,结果是url查询字符串参数使用的是www.youtube.com域,而我对oembed端点的调用是使用youtube.com/oembed。使用www.youtube.com/oembed解决了问题。

答案 4 :(得分:0)

遇到同样的问题。我已经解决了#34;这通过我的服务器中的URL下载JSON然后将其发送给客户端。