使用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来解决这个问题,然后将其发送给客户端。