对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
最简单的解决方案是实现一个小型服务器端代理,代表客户端发出请求。