ショッピングカートのデータを支払いゲートウェイ(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!
}
});
});
問題は、条項内でトリガーされた2回目の送信中にsuccess:
、フォームがまだ送信されないことです。私はevent.preventDefault()
現在の状態を超えて持続すると仮定しています。
どうすればこれを回避できますか?