如何在javascript中使用v3url-API和Ajax&;JSON

如何在javascript中使用v3url-API和Ajax&;JSON,javascript,json,youtube,youtube-api,youtube-javascript-api,Javascript,Json,Youtube,Youtube Api,Youtube Javascript Api,我只是想获取Youtube视频的标题。我似乎不明白。到目前为止,我有: q = 'https://www.googleapis.com/youtube/v3/videos?id='+ itemId +'&key='+ ytApiKey +'&fields=items(snippet(channelId,title,categoryId))&part=snippet' ; $.ajax({ url: q, dataType: "json

我只是想获取Youtube视频的标题。我似乎不明白。到目前为止,我有:

     q = 'https://www.googleapis.com/youtube/v3/videos?id='+ itemId +'&key='+ ytApiKey +'&fields=items(snippet(channelId,title,categoryId))&part=snippet' ;

$.ajax({
      url: q, 
      dataType: "jsonp",
      success: function(data){
               alert(data.items[0].title);
               console.log(data.snippet.title);            
      },
      error: function(jqXHR, textStatus, errorThrown) {
          alert (textStatus, + ' | ' + errorThrown);
      }
  });

谢谢,

以下jquery代码将获取视频的标题

$.ajax({
      url: "https://www.googleapis.com/youtube/v3/videos?id=" + videoId + "&key="+ apiKey + "&fields=items(snippet(title))&part=snippet", 
      dataType: "jsonp",
      success: function(data){
               console.log(data.items[0].snippet.title);           
      },
      error: function(jqXHR, textStatus, errorThrown) {
          alert (textStatus, + ' | ' + errorThrown);
      }
  });
我用它工作

https://www.googleapis.com/youtube/v3/videos?id=itemId&key=apiKey&fields=items(snippet(title))&part=snippet

所以,语法没有太大的错误!但我发现问题其实是在后台设置GoogleAPI的“允许引用者”时出现的。有了V3API,您可以选择API应该属于哪些引用,这样其他人就不能简单地窃取您的API并使用它。因此,如果请求来自您指定的域名/IP,则API将起作用。
当我不给它限制时,代码可以工作,但当我进入我的域时,它失败了!我输入了.mydomainname.com/,与建议的格式相同,但不知怎的出错了。。现在我已经弄明白了原因。

这样做不是不好吗?因为您必须将您的API密钥公开给javascript,任何人都可以查看它?我的理解是,您可以在Google的设置页面中将您的域链接到您的API密钥!这样Youtube就知道API调用的来源,因此其他人不能简单地使用您的API密钥。不过,我在让它工作时遇到了一些问题,所以我还有一个问题要问。这里有一条注释,但我还没有尝试:如果我收到此错误消息,我该怎么办:
请求的资源上没有“Access Control Allow Origin”头。
这是CORS问题。你可以查一下。如果您正在使用jQuery或从后端服务器调用,则可以使用不同的处理方法。同时也检查一下这个帖子:这样做不是很糟糕吗?因为您必须将apiKey公开给javascript,任何人都可以查看它?
alert(data.items[0].snippet.title);