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

时间:2010-08-23 20:11:36

标签: jquery jsonp oembed

我正在使用oembed对youtube进行JSONp调用,并在响应时firebug发出“无效标签”错误

这是我的代码

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请求的类似问题?

2 个答案:

答案 0 :(得分:3)

问题

YouTube API不支持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";

以及其他许多supported sites

演示

请参阅JS Fiddle上的DEMO

另见

另见这些问题:

答案 1 :(得分:0)

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

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

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