0

缓存是我能想到的唯一解释。我正在使用 Stripe,并且我有以下 Javascript 来设置它:

$(function() {
  console.log("Stripe: ");
  console.log($('meta[name="stripe-key"]').attr('content'));
  Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'));
  issueOrder.setupForm();
});

当我直接访问我进行条带订单的页面(即,将确切的 URL 放在地址栏中)时,效果很好。console.log 记录我正在测试的内容,设置了条带令牌,并且付款顺利进行。

但是,当我从网站上以前访问过的页面访问该页面时(即单击付款页面的链接),没有记录任何内容并且未设置条带令牌,从而导致服务器端错误。

似乎javascript被调用了一次,但是当一个新页面被渲染时,它以某种方式识别出它已经被调用了,所以它不会再次调用javascript。不幸的是,Stripe 的可发布密钥没有被缓存,所以这会导致服务器端错误。我是否正确地考虑了这一点,如果是这样,我该如何解决?

4

1 回答 1

1

这是因为 Turbolinks - 只需覆盖将您带到使用 Stripe 的页面的链接的 turbolinks。

<a href="url" data-no-turbolink>Link Text</a>

或 Rails 方式

<%= link_to 'Link Text', url_path, 'data-no-turbolink' => true %>
于 2013-11-10T19:58:26.277 回答