2014-10-07 3 views
0

양식이 응답을받을 때까지이 코드를 어떻게 대기시킬 수 있습니까? 양식은 반복적으로 제출해야하고 반복적으로 응답을 받아야 계속 진행될 수 있습니다.jQuery/Javascript를 사용하여 완료 될 때까지 기다리십시오.

응답이 좀 성공처럼 좋은 것이 보장 할 수있는 방법이 있는지 : 또는 오류 :

$("#pay_window").dialog({ 
      autoOpen: false, 
      width: 600, 
      buttons: { 
       "Submit Payment": function(){ 
        $("#PaymentForm").submit(); 



       <--- NEED A WAIT FUNCTION HERE ---> 



        var dialogbox = $(this); 
        $.ajax({ 
         url: "/payment", 
         data: $(this).find([company_id, billing_email, first_name, last_name, recurly_token, selected_plan, account]).serialize(), 
         type: "POST", 
         success: function (data) { 
          dialogbox.dialog("close"); 
          alert('Payment Completed') 

         }, 
         error: function (jqXHR, textStatus, errorThrown) { 
          alert('error: ' + textStatus + ': ' + errorThrown); 
         } 
        }); 
        return false; 
       } 
      } 
     }); 
+0

그냥'$의 complete' 옵션'에 대기 기능을 전달합니다 입력을 잡아와 'FormData'개체를 만들 수

<form id="foo" action="http://example.com/" method="POST"> <input type="hidden" name="q" value="a"> </form> 

하나 .ajax' – hindmost

+1

AJAX는 비동기식이므로 기다리지 않고 코드의 나머지 부분을 계속 실행하고 성공 또는 오류 콜백은 성공 또는 오류시 호출됩니다. 요청 후에 일어날 일은 반드시 콜백 내부에서 일어나야합니다. 또는 연기 된 객체를 반환하고 나중에 해당 콜백을 처리 할 수 ​​있습니다. – elclanrs

답변

1

양식에 의해 지정된 엔드 포인트에 대한 게시물로 기본적으로 같은 일 제출은 폼의 "action"애트리뷰트 (또는 폼을 포함하는 페이지). 폼 데이터를 수집하고 (jQuery를 통해 반복적으로) 게시물을 만든 다음 jQuery의 Deferred 객체 메소드 ('then', 'done', 'fail'등)를 사용하거나 $ .ajax와 success/error 옵션을 사용할 수있다. ... 이것은 IE 7/8/9에서 작동하지 않을 것입니다 (FormData 객체에 액세스 할 수 없음).

을 감안할 때이 아닌 단순한 형태 이상 :

var $foo = $('#foo'), 
    formData = new FormData($foo[0]), 


$.ajax({ 
    url: $foo.attr('action'), 
    data: formData, 
    type: "POST", 
    success: function (data) { 
     /* do what you want */}, 
    error: function (jqXHR, textStatus, errorThrown) { 
     /* do what you've got to */ } 
}); 
관련 문제