stripe.com是一个支付处理网站,如paypal.com。他们分两步执行信用卡。第一步验证卡信息,第二步将金额和信用额扣除到商家帐户。 但是,对我而言,我需要使用stripe.com验证信用卡信息。所以我做的是,调用一个函数" stripeResponseHandler"它将CC信息传递给条带并在几秒钟内得到响应。它很棒。但问题是,javascript / jquery不会等到函数执行完成。事实上,我已经设置了一个变量来确定基于stripeResponseHandler响应的下一步。 是否有任何方法可以阻止进一步执行,直到stripeResponseHandler函数完成?这里有几行代码:
var cc_validate=1;
function stripeResponseHandler(status, response) { //alert('stripeResponseHandler called');
if (response.error) {
cc_validate=1;
} else { //CC info Correct. Now Charge using PHP by Submit this form
cc_validate=0;
alert('CC Validation passed in stripeResponseHandler call.');
}
}
$('#btnSubmit').on('click', function(e) {
e.stopPropagation();
Stripe.createToken({
number: '4242424242424242',
cvc: '123',
exp_month: '11',
exp_year: '2015'
}, stripeResponseHandler);
alert(cc_validate); // it always output 1(but i need 0 for valid CC)
//'execution always comes here before complete stripeResponseHandler function execution'
答案 0 :(得分:0)
createToken正在进行异步验证,因为大多数函数都会进行网络调用。 将处理移至stripeResponseHandler。
无法停止并等待网络呼叫完成,然后再次开始处理而不使用回调。将您的进一步处理移动到一个函数中,并从函数stripeResponseHandler调用该函数。