복붙노트

[JQUERY] 모든 AJAX 호출이 완료되면 어떻게해야합니다

JQUERY

모든 AJAX 호출이 완료되면 어떻게해야합니다

해결법


  1. 1.가장 쉬운 방법은 .ajaxstop () 이벤트 핸들러를 사용하는 것입니다.

    가장 쉬운 방법은 .ajaxstop () 이벤트 핸들러를 사용하는 것입니다.

    $(document).ajaxStop(function() {
      // place code to be executed on completion of last outstanding ajax call here
    });
    

    AJAX 호출이 여전히 활성 상태인지 수동으로 감지 할 수도 있습니다.

    활성 Ajax 연결 수를 포함하는 변수를 만듭니다.

    var activeAjaxConnections = 0;
    

    새로운 Ajax 연결을 열지 않도록하기 변수를 사용하십시오

    $.ajax({
      beforeSend: function(xhr) {
        activeAjaxConnections++;
      },
      url (...)
    

    성공 부분에서 해당 변수가 0으로 똑같이 확인하십시오 (그렇다면 마지막 연결이 완료 되었음)

    success: function(html){
      activeAjaxConnections--;
      $('#result_'+rowNum).empty().append(html);
      $('#coda_'+rowNum).removeClass("loading");
      $('#coda_'+rowNum).addClass("loader");
      if (0 == activeAjaxConnections) {
        // this was the last Ajax connection, do the thing
      }
    },
    error: function(xhr, errDesc, exception) {
      activeAjaxConnections--;
      if (0 == activeAjaxConnections) {
        // this was the last Ajax connection, do the thing
      }
    }
    

    보시다시피, 오류로 돌아 가기를 확인했습니다.


  2. 2.깔끔한 솔루션을 사용하는 것입니다.

    깔끔한 솔루션을 사용하는 것입니다.

    $("body").ajaxStop(function() {
        //Your code
    });
    

    자세한 내용은 jQuery를 확인하십시오. http://api.jquery.com/ajaxstop/에서 .AJAXSTOP 기능


  3. 3.아마도:

    아마도:

    jQuery.active == 0
    

    도난당한 :

    http://artsy.github.com/blog/2012/02/03/reliably-testing-asynchronous-ui-w-slash-rspec-and-capybara/

    StackOverflow에 대한 추가 정보 :

    jquery.active 기능


  4. 4.단순히 사용하는 것만으로 만드는 것은 어떻습니까?

    단순히 사용하는 것만으로 만드는 것은 어떻습니까?

    success: function(html){
       if(html.success == true ){
                $('#result_'+rowNum).empty().append(html);
                $('#coda_'+rowNum).removeClass("loading");
                $('#coda_'+rowNum).addClass("loader");
    
              }
       }
    
  5. from https://stackoverflow.com/questions/287188/how-to-know-when-all-ajax-calls-are-complete by cc-by-sa and MIT license