未捕获的ReferenceError:未定义Braintree

时间:2014-03-27 12:54:49

标签: python django eclipse braintree

我使用的是django framework 1.6.2,eclipse 3.8.1,python 2.7.5

我已经跟随This link作为我的样本测试程序,不幸的是我遇到了问题,但它的工作完美,没有使用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 :(得分: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>

答案 1 :(得分:1)

我通过改变来修复它 src="https://js.braintreegateway.com/v2/braintree.js" 否则只有Braintree可用于v1名称空间。

答案 2 :(得分:0)

将需要Braintree脚本的代码移动到

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

为我工作。