【问题标题】:Render YouTube subscribe button after AJAX call successAJAX 调用成功后呈现 YouTube 订阅按钮
【发布时间】:2018-10-13 01:03:16
【问题描述】:

如果包含在 AJAX 响应中,如何呈现 YouTube 订阅按钮。我使用了下面的函数,但它在控制台日志中返回了这个错误:

SecurityError: Permission denied to access property "blablabla" on cross-origin object

function load_js() {
  var head = document.getElementsByTagName('head')[0];
  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = 'https://apis.google.com/js/platform.js';
  head.appendChild(script);
}

$.ajax({
  type: "POST",
  url: ajaURL,
  data: {
    action: 'my_action',
  },
  success: function(response) {
    // response = <div class="g-ytsubscribe" data-channelid="CHANNEL_ID" data-layout="default" data-count="default"></div>
    $('.youtube-btn-container').html(response);
    load_js();
  }
});

【问题讨论】:

  • 你所提供的帮助不大。 "Permission denied to access property 'blablabla'" 我没有看到任何尝试访问任何属性的尝试,只是设置了带有响应的元素的html()ajaURL 是针对 youtube 还是您自己的服务器端文件?
  • ajax 目标服务器端文件
  • @NewToJS 如果我添加 HTML "
    " 没有 ajax 它可以工作并且它不会返回任何错误。但是使用 ajax 我必须重新加载 platform.js 文件才能工作
  • 您自己的服务器端文件并使用相同的域?您的问题缺少非常重要的信息,因此很难为您提供帮助,因此请更新您的问题并包含所有相关信息。
  • @NewToJS 我使用了方法 gapi.ytsubscribe.render。这里是完整的例子:developers.google.com/youtube/subscribe/…

标签: javascript ajax youtube-javascript-api


【解决方案1】:

如果您在本地进行测试,您可能需要允许跨源资源共享 (CORS)。这是一个应该出现在您的请求中的标头。你可以在MDN阅读更多关于它的信息。

在 Chrome 中,有几个扩展程序可以让这变得简单。我个人用this一个。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-02
  • 2017-11-15
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
相关资源
最近更新 更多