2013-04-21 3 views
0

문제점 : Ajax reguest를 보내고 양식을 제출하려고합니다.양식을 제출하기 전에 AJAX 요청을 보내십시오.

Aproaches는 : 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> 
+0

왜 성공 함수에서 그 코드를 사용하는 것이 좋은 해결책이 아닌지보십시오. 항상 양식을 제출하고 있습니까, 아니면 AJAX의 응답에서 무엇인가를 확인하려고합니까? – shashwat

+1

에서 귀하의 요청에 유효한 응답을받을 때 success' 함수가 호출'사촌

<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> 
user1048676

+0

나는 항상 양식을 제출할 것입니다. – max

답변

1

@harsh가 지적한 바와 같이 get 요청이 유효한 응답을 수신하면 success 함수가 호출됩니다. 따라서 get 요청 후에 발생합니다. 나는 당신이 요청으로 내가 그것을 테스트하지 않았습니다 불구하고 다음과 유사한 뭔가 할 것입니다 믿습니다

당신은 내가하지 않는 서버