javascript - 使用模板变量作为脚本 src 的一部分

标签 javascript jquery google-apps-script paypal

我正在尝试创建一个模型付款弹出窗口,用户可以在其中在 Google Apps 脚本中升级他们的计划。在我的 .gs 文件中,我有:

function manageSubscription() {
  var title = 'subscribe';
  var html = HtmlService.createTemplateFromFile('subscribe');
  html.email = Session.getActiveUser().getEmail();
  var htmlOutput = html.evaluate();
  htmlOutput.setTitle(title).setWidth(200).setHeight(200)
  DocumentApp.getUi().showModalDialog(htmlOutput, title);
}

在我的 .html 文件中,我尝试使用该电子邮件地址在注册时将其传递给 PayPal:

  <script id="paypal_js"></script> // how do I set the src???
  <script>
  $(document).ready(function(){
    var src = 'https://www.paypal.com/sdk/js?client-id=my-client-id&email=';
    document.getElementById('paypal_js').src = src+<?= email ?>;

    paypal.Buttons({
      createSubscription: function(data, actions) {
        return actions.subscription.create({'plan_id': 'P-my-plan'});
      },
      onApprove: function(data, actions) {
        google.script.host.close();
      }
    }).render('#paypal-button-container');
  });
  </script>

但是,我在浏览器控制台中收到 ReferenceError: paypal is not Defined 。奇怪的是,我可以做一个简单的“alert();”并看到我收到了电子邮件。

最佳答案

问题在于您的代码,其中使用的是 paypal, 您正在动态添加 script,我假设您将从该脚本获取 paypal 作为全局对象。

您忘记的是,在执行 paypal.Buttons 代码时,paypal 在浏览器中不可用。因为,它仍然可能从您刚刚包含的脚本中获取和评估代码。您必须监听脚本 onload 事件并在此之后调用您所需的函数。

<script id="paypal_js"></script> // how do I set the src???
  <script>
  $(document).ready(function(){
    var src = 'https://www.paypal.com/sdk/js?client-id=my-client-id&email=';
    var scriptTag = document.getElementById('paypal_js')
    scriptTag.src = src+<?= email ?>;

    scriptTag.onload = function() {
      paypal.Buttons({
        createSubscription: function(data, actions) {
          return actions.subscription.create({'plan_id': 'P-my-plan'});
        },
        onApprove: function(data, actions) {
          google.script.host.close();
        }
      }).render('#paypal-button-container');
    }
  });
  </script>

关于javascript - 使用模板变量作为脚本 src 的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60917606/

相关文章:

javascript - 'perspective' 更改后,Firefox 和 Safari 不尊重 z-index

javascript - 后端准备json数据,前端通过ajax填充数据,有什么问题吗?

javascript - PHP 获取当前页面的 URL,而不是脚本

javascript - 空值应用程序脚本谷歌表单

javascript - 如何设置按钮处理程序来删除父表行?

javascript - PHP if else 使上传到数据库的值为空

jquery - Ajax 向 Controller 操作发送空参数

javascript - 如何让 RegEx 获取整个 URL...从 http 开始并获取之后的所有内容,直到空格以及如何排除某些字符

javascript - For 循环超时 : JavaScript/Google Apps Script

javascript - 在 Google 表格中将 Unix 纪元时间转换为日期