Javascript 使用oembed嵌入youtube视频

Javascript 使用oembed嵌入youtube视频,javascript,jquery,json,youtube,oembed,Javascript,Jquery,Json,Youtube,Oembed,我想使用oembed通过jQuery从youtube链接获取嵌入代码: 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); }); 我没有任何数据 有趣的是,如果我浏览

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

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: "<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
}
{
提供程序\u url:“http://www.youtube.com/"
标题:“特罗洛”
html:“
作者姓名:“KamoKatt”
身高:344
缩略图宽度:480
宽度:425
版本:“1.0”
作者地址:“http://www.youtube.com/user/KamoKatt"
提供商名称:“YouTube”
缩略图url:“http://i2.ytimg.com/vi/iwGFalTRHDA/hqdefault.jpg"
类型:“视频”
高度:360
}
我还使用了jquery oembed插件,但是如果请求成功,也会抛出onError选项


我真的很期待一些想法…

如果我将原始trololo url嵌入到oembed url中,我就可以很好地获得json数据。我猜,通过在地址栏中键入编码版本,无论如何都会进行一层解码,因此尝试发送原始版本:

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

事实上,问题在于跨域ajax请求违反了浏览器同源策略。有一些潜在的解决办法——不幸的是最好的。下一个最好的方法是使用Flash进行传输。这是由。您还可以看到。

使用json-c版本:


我有一个类似的问题,原来
url
查询字符串参数使用的是
www.youtube.com
域,而我对oembed端点的调用使用的是
youtube.com/oembed
。使用
www.youtube.com/oembed
修复了问题。

也遇到了同样的问题。我已经“解决”了这个问题,在我的服务器中有一个url下载JSON,然后发送给客户端。

我以前尝试过,但正如mjhm所说,跨域ajax请求在2021年1月仍然有效。当我测试一个类似的url时,我收到一条JSON格式的错误消息:
{“apiVersion”:“2.1”,“error”:{“code”:410,“消息”:“不再可用”,“错误”:[{“域”:“GData”,“代码”:“NoLongerAvailableException”,“internalReason”:“不再可用”}]}
是的,相同。不推荐使用!
    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);
        }
    });