2012-05-23 2 views
0
  1. 내가 버튼을 클릭 제출 양식에 순서대로 일부 기능을 호출 할 필요가> FUNC2를() -> func3() ... -> func7() -> ...모든 양식 제출 및 추가 처리를 중지 할 수있는 동기/비동기 기능의 순서를 설정하는 올바른 방법은 무엇입니까?)</p> <p>에서 func1 (- -

  2. 이러한 모든 기능은 일종의 유효성 검사/검사를 수행하며 유효성 검사가 실패하면 사용자에게 확인 대화 상자를 표시합니다. 사용자가 확인하면 대기열의 다음 기능이 실행됩니다.

  3. 이러한 함수 중 일부는 Ajax 요청을 보내는 것과 같은 비동기 작업을 수행 할 수 있으며 결과에 따라 사용자에게 일부 확인 대화 상자를 표시 할 수 있습니다.

세부

I가 다음과 같은 구조의 비동기 기능 -이 작업을 수행하려면 어떻게

function preValidateUrls(evt) 
{ 
    evt.preventDefault(); 

    $.ajax({ 
     type: "POST", 
     url: posturl+"?"+params, 
     dataType: "json", 
     success: function(res) 
      { 
       //display some confirmation dialog 
       if(confirm(msg)) 
       { 
         $("form#frmBanners").submit(); 
       } 
      } 
     }); 
} 

? 난 그냥 다음과 같이 정의 된 두 개의 동기 기능을 가지고와

시작하기 -

<form onsubmit="return func3()"> 
... 
... 
<input type="submit" onclick="return func1()"/> 
</form> 
  • 에서 func1() ... 확인 대화 상자, 다음 FUNC2을() 표시, 처음에 호출되는했다

  • 그런 다음 위와 같은 구조의 func2() 비동기 함수를 정의하고 다음과 같이 호출했습니다.

    $ ("input # formsubmitbutton") click (func2);

그러나 예상대로 func1()의 확인을 기다리지 않습니다. 나는 다음과 같이 할 경우

  • 이 함수 func2 다시하고 다시 호출되는 -

    $ ('폼 #의 frmBanners'을() 함수() { 반환 FUNC2()를 제출;.// 이것은 preValidateUrls() 후에 호출됩니다 });

어떻게 깨끗한 방법으로이 작업을 수행 할, 그래서 사이에 어떤 동기/비동기 기능을 추가 할 필요가 내일, 나는 한 장소에서 편집해야 뭔가 같은 -

func1() -> func2() -> func3() ... -> func7() 

PS - 나도 알아, 자바 스크립트에서 콜백 함수를 사용하는 방법.

답변

1

어떻게 제출 핸들러에서 하나의 기능에 대한 :

<form action="" onsubmit="return func_test_all();"> 
</form> 

그런 다음 내부 사용자의 func_test_all() 즉각적인 양식 제출을 방지하기 위해 마지막에 Deferred pipereturn false;을 설정합니다.

실행해야하므로 완전한 코드 샘플이 없습니다. Deferred ;-)가 3 시간 내에 다시 돌아올 것입니다.

+0

이 질문에 답할 수 있는지 확인하십시오. http://stackoverflow.com/questions/13234386/using-deferred-with-jquery-ajax-calls-and-async-processes-along-with-user-confir –