未捕获的引用错误:Braintree未定义

2 投票
3 回答
4723 浏览
提问于 2025-04-18 00:09

我正在使用django框架1.6.2,eclipse 3.8.1,python 2.7.5。

我按照这个链接的示例程序来做测试,但不幸的是,我遇到了问题。不过在不使用eclipse的情况下,它运行得很好。请帮帮我,你们的帮助我非常感激。

客户端问题:

代码是

<html>
  <head>
  </head>
  <body>
    <h1>Braintree Credit Card Transaction Form</h1>
    <div>
      <form action="/create_transaction" method="POST" id="braintree-payment-form">
        <p>
          <label>Card Number</label>
          <input type="text" size="20" autocomplete="off" data-encrypted-name="number" />
        </p>
        <p>
          <label>CVV</label>
          <input type="text" size="4" autocomplete="off" data-encrypted-name="cvv" />
        </p>
        <p>
          <label>Expiration (MM/YYYY)</label>
          <input type="text" size="2" data-encrypted-name="month" /> / <input type="text" size="4" data-encrypted-name="year" />
        </p>
        <input type="submit" id="submit" />
      </form>
    </div>
    <script src="https://js.braintreegateway.com/v1/braintree.js"></script>
    <script>
      var braintree = Braintree.create("YourClientSideEncryptionKey");
      braintree.onSubmitEncryptForm('braintree-payment-form');
    </script>
  </body>
</html>

错误是

Uncaught ReferenceError: Braintree is not defined 

服务器端问题:

代码是

import braintree

braintree.Configuration.configure(braintree.Environment.Sandbox,
                              merchant_id="use_your_merchant_id",
                              public_key="use_your_public_key",
                              private_key="use_your_private_key")

错误是

Undefined variable from import:Sandbox

3 个回答

0

把需要Braintree脚本正常加载的代码移动到一个

$( window ).load(function() {}

里面,对我来说是有效的。

1

我通过把代码改成 src="https://js.braintreegateway.com/v2/braintree.js" 来解决这个问题。否则的话,似乎只有Braintree在v1这个命名空间下可用。

5

我使用了v2脚本,但还是遇到了同样的错误。问题出在异步加载脚本上。你的脚本braintree.js还没有加载完成,但下一个脚本已经开始执行了,所以你看到的错误是braintree没有定义。

为了解决这个问题,我使用了jQuery的getScript方法,并在回调函数中执行第二部分代码。

<script>
    $.getScript( "https://js.braintreegateway.com/v2/braintree.js", function() {
        var clientToken = "myTokenClient";
        braintree.setup(clientToken, "dropin", {
            container: "payment-form"
        });
    });
</script>

撰写回答