我有一个将购物车数据提交到支付网关 (WorldPay) 支付处理页面的表单。我需要在自定义决定进行付款时但在表单提交本身之前执行一些额外的逻辑。基本上,我只是想在最后一刻生成对订单的唯一引用。
这是提交事件的 jQuery 代码:
$(function(){
$('#checkout-form').submit(function(e){
var $form = $(this);
var $cartIdField = $('#cartId');
console.log($cartIdField.val());
if($cartIdField.val() == ''){
e.preventDefault();
$.ajax({
url: baseUrl + '/shop/ajax/retrieve-shopping-cart-reference/',
data: {}, type: 'post', dataType: 'json',
success: function(json){
if(json.error == 0){
$('#cartId').val(json.data.cart_reference_number);
$form.submit();
}else{
alert(json.message);
}
}
});
}else{
console.log('Submitting form...'); //Does not submit!
}
});
});
问题是在success:
子句中触发的第二次提交期间,表单仍然没有提交。我假设event.preventDefault()
持续超出当前条件。
我怎样才能解决这个问题?