我试图实现Braintree Drop-in UI,我想使用自定义的jQuery ajax方法发送表单.
以前,我曾经使用jQuery serialize()方法发送(非插入式UI)表单,但是对于新的(动态加载的)Dropin UI表单,serialize()方法似乎不起作用(payment_method_nonce值被设置为空).
然而,通过一个基本的html表单(没有ajax)发送表单似乎工作正常,所以我的payment_method_nonce在那里,它只是迷路了.
以前,我曾经使用jQuery serialize()方法发送(非插入式UI)表单,但是对于新的(动态加载的)Dropin UI表单,serialize()方法似乎不起作用(payment_method_nonce值被设置为空).
然而,通过一个基本的html表单(没有ajax)发送表单似乎工作正常,所以我的payment_method_nonce在那里,它只是迷路了.
我如何确保serialize()方法不会丢失payment_method_nonce值?
或者作为一个更一般的问题,如何使用ajax发送Drop-in UI表单?
我知道在执行braintree.setup时需要使用paymentMethodNonceReceived标志,但是在我的情况下不行,因为我需要保留发送请求的代码/处理与braintree.setup分离的响应.
干杯
解决方法
显然,paymentMethodNonceReceived方法是最后的方法.
一旦创建了令牌,我使用它创建一个隐藏的字段,这是一个表单的一部分,然后可以使用serialize()方法序列化没有任何问题.以下是代码示例:
一旦创建了令牌,我使用它创建一个隐藏的字段,这是一个表单的一部分,然后可以使用serialize()方法序列化没有任何问题.以下是代码示例:
<script type="text/javascript"> braintree.setup("PaymentTokenGoesHere","dropin",{ container: "myDiv",paymentMethodNonceReceived: function (event,nonce) { $('#myForm').append("<input type='hidden' name='payment_method_nonce' value='" + nonce + "'></input>"); CallAjaxMethod(); } }); </script>