2010-06-03 56 views
0

我正在尝试使用YouTube的API来恢复用户视频的列表。请求网址如下所示:
http://gdata.youtube.com/feeds/api/users/username/uploads
'username'是正确的用户名。这会在浏览器中恢复相应的URL。然而,当我尝试访问通过jQuery的$阿贾克斯或$不用彷徨函数,网址,使用类似:jquery ajax vs浏览器网址

$.ajax({ 

    //set parameters 
    url: "http://gdata.youtube.com/feeds/api/users/username/uploads", 
    type: "GET", 

    //on success 
    success: function (data) { 
     alert("xml successfully captured\n\n" + data); 
    }, 
    //on error 
    error:function (XMLHttpRequest, textStatus, errorThrown, data){ 
     alert(" We're sorry, there seem to be a problem with our connection to youtube.\nYou can access all our videos here: http://www.youtube.com/user/username"); 
     alert(data); 
    }  
    }); 

    $.get("http://gdata.youtube.com/feeds/api/users/username/uploads", function(data){ 
    alert("Data Loaded: " + data); 
    }); 

我得到一个空文件返回。任何想法,为什么这是?

回答

2

你在这里打same-origin policy,防止跨域请求...但你可以在这种情况下做JSONP之后的事情(因为youtube支持它,只要JSON数据是你的选项代码,通常这是首选所以我希望这是你的解决方案)。使用JSONP如下所示:

$.ajax({ 
    url: 'http://gdata.youtube.com/feeds/api/users/username/uploads?alt=json​', 
    dataType: 'jsonp'​​​​, 
    success: function(data) { 
     console.log(data); //entire object here 
     //another example 
     alert("Feed title: " + data.feed.title.$t); 
    } 
});​ 

You can see a working demo here, this grabs the video upload feed for nike。只需探索控制台中的对象,看看你想要的数据并抓住它:)

+0

非常感谢!然而,我得到了“数据类型:'jsonp'”行后的“意外标记:非法”错误... ... – danwoods 2010-06-03 02:51:05

+0

即使我直接复制示例代码... – danwoods 2010-06-03 02:52:27

+0

没关系。潜伏在代码中的一些隐形字符:)再次感谢,我感谢它... – danwoods 2010-06-03 03:17:16