【问题标题】:Failed to extract videos through json from youtube无法通过 json 从 youtube 提取视频
【发布时间】:2012-03-22 01:41:05
【问题描述】:

有时我在通过 json 提取 youtube 视频时遇到此错误,这是一个示例:

XMLHttpRequest 无法加载https://gdata.youtube.com/feeds/api/users/IcarusTouma?&alt=json。 Access-Control-Allow-Origin 不允许来源http://localhost。

我尝试使用 jsonp,但 youtube 不接受 jsonp。

所以从 youtube 中提取视频。

$. getJSON ('https://gdata.youtube.com/feeds/api/videos/' + id_video + '? & alt = json', function (data) {
if (typeof data! == "undefined" && data)
{
     var title = data ['entry'] ['title'] ['$ t'];
     var thumb = data ['entry'] ['media $ group'] ['media $ thumbnail'] [0] ['url'];
     var title = data ['entry'] ['author'] [0] ['name'] ['$ t'];
     $. getJSON ('https://gdata.youtube.com/feeds/api/users/' + author + '? & alt = json', function (data) {

     author_thumbnail var = data ['entry'] ['media $ thumbnail'] ['url'];
     $ ('.items').append(html_carousel (thumb, title, author_thumbnail, author, 5,' youtube ', id_video, author'));

     });
}
});

【问题讨论】:

  • 尝试添加“&callback=?”在您的网址中。
  • 如果远程服务器没有以 JSONP 方式回复,那么您就无法从中获取数据。

标签: jquery ajax json youtube xmlhttprequest


【解决方案1】:

刚刚检查了 YouTube 数据 API 参考文档,对于 JSON 和较新的 JSON-C 格式,它们都接受 JSON-P,允许您通过 callback GET 字符串参数指定回调。此链接将证明这是真的:

https://gdata.youtube.com/feeds/api/videos?q=baseball&v=2&alt=jsonc&callback=functionName

在这种情况下,长 JSON 对象返回包含在对 functionName 的函数调用中。下一个 URL 是同一个调用,但采用的是较旧的(并且有些过时的)JSON 格式:

https://gdata.youtube.com/feeds/api/videos?q=baseball&v=2&alt=json&callback=functionName

数据有点不同,但结果集相同,包含在对 functionName 的另一个调用中。现在,这些调用是获取与搜索参数(“棒球”)匹配的视频的查询。但我确信仔细阅读他们的参考文档(对于 JSON-C 和 JSON 格式)将产生使此工作正常工作所需的内容,作为 JSONP 调用,在查询字符串中指定回调。

【讨论】:

    【解决方案2】:

    在 ajax 调用中使用 dataType: 'jsonp'。

    见:http://jsfiddle.net/D4tEk/

    【讨论】:

    • 看起来这个 API 已经死了,它返回 HTTP 410 GONE
    猜你喜欢
    • 2017-01-10
    • 1970-01-01
    • 2020-06-26
    • 2019-07-12
    • 2017-07-10
    • 1970-01-01
    • 2023-03-07
    • 2015-08-17
    • 2023-04-03
    相关资源
    最近更新 更多