使用oembed嵌入YouTubevideo

我想使用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); }); 

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

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

 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: "" 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://sofzh.miximages.com/javascript/hqdefault.jpg" type: "video" thumbnail_height: 360 } 

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

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

实际上问题是你违反了浏览器相同的源策略与跨域ajax请求。 有一些工作潜在的工作 – 不幸的是最好的JSONP,并没有由YouTube实施 。 接下来最好的是使用Flash进行传输。 这由YUI-IO实用程序使用 。 你也可以在这里看到Jquery的建议 。

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

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

使用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); } }); 

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

得到了同样的问题。 我通过在我的服务器中下载了一个URL来解决这个问题,然后将其发送给客户端。