2011-09-26 7 views
3

두 개의 ajax $.get() 요청을 동기화해야합니다.AJAX 완료시 신호 방법

는 기본적으로

var signal1 = false; 
var signal2 = false; 

    $.get(url, 
       {}, 
       function (data) { 
        signal1 = true;//callback complete. 
       },'json'); 

    $.get(url2, 
       {}, 
       function (data) { 
        signal2 = true;//callback complete. 
       },'json'); 

    when(signal1 && signal2 == true) 
     $.get(url3... 

어떻게, 나는 이런 유형의 작업을 수행해야 할 수 있습니까? (보너스, 실패 콜백에 대한 AJAX 서명은 무엇입니까?)

답변

3

당신은 이런 식으로 작업을 수행합니다

$.when(
    $.get(url, {}, function(data) { 
     // signal 1 complete 
    }, 'json'), 
    $.get(url2, {}, function(data) { 
     // signal 2 complete 
    }, 'json') 
).then(function() { 
    // success after both methods finish 
}, function() { 
    // failure method 
}); 

jQuery.when를 참조하십시오 http://api.jquery.com/jQuery.when/

+0

두 답변 모두 훌륭합니다. 당신도 보너스 질문을 기절했기 때문에 답 신용을 얻습니다. –

+0

'.then (success_func) .fail (failure_func)'의 대안은'.then (sucess_func, failure_func)'입니다. 둘 다 작동합니다. 나는'fail' 메쏘드로 명료하게 철자하는 것을 선호한다. –

+0

뭔가 작동하지 않습니다. 나는 여기에 콜백이'$ .get()'에 정의되어 있음을 알아 차렸다. 이건 사실 괜찮아, 더 나은 것 같아.하지만 법적인거야? 온라인에서 찾은 코드는'then()'의 콜백을 정의합니다. –

4

jquery 지연/약속 방법을 살펴보면, 바로 당신이하려는 일을합니다.

$.when($.ajax("/page1.php"), $.ajax("/page2.php")).done(function(a1, a2){ 
    // a1 and a2 are the results of your two calls. 
}); 

http://api.jquery.com/jQuery.when/

http://api.jquery.com/deferred.promise/

+0

방법이 구문을 사용하여 반환 형식을 정의합니까? (html/json) –

+0

특정 메소드 ($ .get/$. getJSON)를 사용하거나 $ .ajax 호출을 확장하여 지정할 수 있습니다. 이게 네가 말하는거야? – BNL