0

問題: ajax リクエストを送信してから、フォームを送信しようとしています。

アプローチ:1.私は置くことで問題を解決しました

success: function() { 
   document.myform.submit();
}

しかし、それは最もエレガントなソリューションではないと思います。入れた場合にのみ機能する理由を説明できますdocument.myform.submit(); in successか? この問題を解決する他の方法はありますか?

<div class="buttons">
  <div class="right">
        <form name="myform" onsubmit="javascript: startAjax(); return false;" action="https://example.com/payment.php" method="get">
                    <input type="hidden" name="merchantId" value="<?php echo $merchantIdKZM; ?>"> 
                    <input type="submit" value="<?php echo $button_confirm; ?>" id="button-confirm2" class="button" name="PayKZM" />
                </form>
    </div>
</div>

<script type="text/javascript">
function startAjax() {
    console.log("dafaaaa");
    $.ajax({ 
                type: 'get',
                url: 'index.php?route=payment/bank_transfer/confirm',
                async: 'false',
                success: function() {

                        // location = '<?php echo $continue; ?>';
                }               
        });

} // Calls ajaxComplete() when finished

function ajaxComplete()
{
    console.log("dafa");
  document.myform.submit();
}
</script>
4

1 に答える 1

1

@harshが指摘したように、getリクエストが有効なレスポンスを受け取ると、successの関数が呼び出されます。したがって、get リクエストの後に発生します。私はそれをテストしていませんが、あなたが要求したように、次のようなことができると思います:

<script type="text/javascript">
$(function () {
    $("#form").on('submit', function () {
        var $form = $(this);
        $.ajax({
            type: 'GET',
            url: 'index.php?route=payment/bank_transfer/confirm',
            data: $form.serialize(),
            async: 'false',
            success: function () {
                $.ajax({
                    type: 'GET',
                    url: 'https://example.com/payment.php',
                    data: $form.serialize(),
                });
            }

        });
    });
});
</script>
于 2013-04-21T08:04:32.077 に答える