2013-03-25 156 views
0

所以我非常沮丧,因为我正在试图将其发布到YouTube API。 但是,当我使用Ajax时,我得到语法意外的t变量错误。通过JavaScript订阅YouTube频道

下面是代码:

$.ajax({ 
url:"gdata.youtube.com/feeds/api/users/default/subscriptions", 
type:"POST", 
data:"<?xml version='1.0' encoding='UTF-8'?> 
<entry xmlns='http://www.w3.org/2005/Atom'   xmlns:yt='http://gdata.youtube.com/schemas/2007'> 
<category scheme='http://gdata.youtube.com/schemas/2007/subscriptiontypes.cat' 
term='channel'/> 
<yt:username>GoogleDevelopers</yt:username> 
</entry>", 
Authorization: token, 
GData-Version: '2', 
X-GData-Key:  'key=MYDEVKEY', 
contentType:"application/atom+xml", 
dataType:"xml", 
success: function(){ 
alert('subscribd'); 
} 
}); 

并与一些研究,我发现,代码的第一行会导致错误。有没有办法将这些数据发布到api。哦,文档是在https://developers.google.com/youtube/2.0/developers_guide_protocol_subscriptions#Adding_a_subscription。请问我可以如何发布这些数据?谢谢!

+0

这是JavaScript中的多行字符串吗? – Mohsen 2013-03-25 20:09:30

+0

@Mohsen,删除空格,仍然是同样的错误! – InfiniDaZa 2013-03-25 20:12:10

+0

将整个XML文件写入一行。 JS没有多行字符串。 – Mohsen 2013-03-25 20:49:24

回答

0

我的建议是避免使用YouTUbe GData API v2来执行此操作。虽然确实有可能实现这个目标,但它依赖于在支持CORS的浏览器中运行的JavaScript,并排除除最新版本的Internet Explorer之外的所有JavaScript。

如果您确实想要使用GData API v2来执行此操作,您可能会发现使用JSON主体而不是XML主体进行POST更容易,并且在POST URL中包含alt=json。有一个使用JSON实体对v2 here进行POST请求的示例,以及其他示例。

但是,我真正推荐的做法是使用YouTube Data API v3,它具有用于添加订阅的subscriptions.insert()方法。您可以使用一个很好的JavaScript client library,它将负责为您处理OAuth 2,并以适用于各种浏览器的方式提供API请求。