对youtube oembed调用的JSONp请求的响应给出“无效标签”错误

我正在使用oembed对youtube进行JSONp调用,并且响应firebug会出现“invalid label”错误

这是我的代码

site = "www.youtube.com"; url = "http://www.youtube.com/watch?v=slORb622ZI8"; $.getJSON("http://"+site+"/oembed?callback=?",{"format":"json","url":url},function(data){ alert("hello:\n"+data); alert(data.provider_url); }); 

任何人遇到oembed jsonp请求的类似问题?

问题

YouTube API不支持JSONP – 请参阅:

  • 问题4329:oEmbed JSONP的回调 。

不需要服务器端代理,也不需要API密钥。

代替:

 var url = "http://www.youtube.com/watch?v=slORb622ZI8"; $.getJSON("http://www.youtube.com/oembed?callback=?", {"format": "json", "url": url}, function (data) { alert("hello:\n"+data); alert(data.provider_url); }); 

尝试使用Noembed服务:

 var url = "http://www.youtube.com/watch?v=slORb622ZI8"; $.getJSON("https://noembed.com/embed?callback=?", {"format": "json", "url": url}, function (data) { alert("hello:\n" + data); alert(data.provider_url); }); 

作为奖励,当您将url更改为以下内容时,这也适用于Vimeo链接:

 var url = "https://vimeo.com/45196609"; 

和许多其他支持的网站 。

演示

请参阅JS Fiddle上的DEMO

也可以看看

另见这些问题:

  • 没有API密钥的API v3的Youtubevideo标题?
  • 通过JSON获取Youtube信息,以获取Javascript中的单个video(非Feed)

Youtube的Oembed API目前不会在回调中包装JSON响应。 JSONP根本不受支持atm。,它似乎不会很快改变: https : //groups.google.com/forum/?fromgroups =#!topic / yourube -api-gdata / 5KuXxlLK07g

以下是相关function请求的凭单: https : //code.google.com/p/gdata-issues/issues/detail?id = 4329

最简单的解决方案是实现一个小型服务器端代理,代表客户端发出请求。