YouTube播放列表返回为“#document”而不是XML文档

youtube playlist returning as '#document' instead of XML doc

本文关键字:XML 文档 #document 播放列表 返回 YouTube      更新时间:2023-09-26

尝试使用 YouTube 开发者 API v2 检索播放列表时,我在 Chrome 控制台中不断收到响应,指出加载的文件类型错误,并且是文档,而不是 XML。这是我正在使用的代码:

$.get('https://gdata.youtube.com/feeds/api/playlists/8BCDD04DE8F771B2?v=2',
  function(data)
  {
    var doc = data;
    console.log( data );
  });

控制台中的结果是:#document我希望结果是XML文档。

关系,它是XML,这是jQuery的XML表示

您可以使用 XML2JSON

您肯定是从提要中获取一个 xml 文档,并且如果您想确保您的 jQuery ajax 请求能够识别它,您可以指定 "dataType" 参数,如下所示:

$.get('https://gdata.youtube.com/feeds/api/playlists/8BCDD04DE8F771B2?v=2',
  function(data)
  {
    console.log( 'An xml feed is being retrieved, true or false:'+($(data).children('feed').length == 1).toString());
  },'xml');

或使用 longhand $.ajax 方法,该方法也可以通过使用"错误"选项来帮助调试:

$.ajax({
    url: 'https://gdata.youtube.com/feeds/api/playlists/8BCDD04DE8F771B2?v=2',
    dataType: 'xml',
    success: function(data){
        console.log( 'An xml feed is being retrieved, true or false:'+($(data).children('feed').length == 1).toString());
    },
    error: function(xhr,stat,err){ console.log(stat+': '+err); }
});

下面是一个使用 $.ajax 方法的示例,实际上它被识别为有效的 xml,甚至没有指定 dataType 参数:http://jsfiddle.net/UZddq/2/

使用 json 也可能更容易。您可以通过在网址中指定"alt"参数,以 json 格式从 youtube 检索 Feed:

$.ajax({
    url: 'https://gdata.youtube.com/feeds/api/playlists/8BCDD04DE8F771B2?v=2&alt=json',
    dataType: 'json',
    success: function(data){
        console.log( 'A json feed is being retrieved, true or false:'+data.hasOwnProperty('feed').toString());
    },
    error: function(xhr,stat,err){ console.log(stat+': '+err); }
});

下面是 json 版本示例: http://jsfiddle.net/hvFQj/2/