2010-05-20 12 views
10

진행중인 Ajax 요청이 있는지 확인하는 방법이 있습니까? 뭔가 같은 :진행중인 Ajax 요청 jQuery

if ($.ajax.inProgress){ do this; } else { do that; } 

답변

6

당신은 기본적으로 false와 아약스에 설정 스크립트의 상단에 변수를 설정해야합니다은 true로 설정하고 success 핸들러에 described here로 다시 false로 설정 시작합니다.

+2

가끔씩 가장 좋은 해결책은 가장 간단한 해결책입니다 :) 감사합니다! – bah

+0

@bah : 환영합니다. 동의 : – Sarfraz

+0

안녕하세요! 웹 페이지를 테스트 중이며 Ajax 요청이 자바 스크립트를 사용하여 완료되었는지 (예 : 웹 페이지를 제어 할 수 없으며 Java 스크립트를 삽입 할 수 있음) 어떻게 알 수 있습니까? –

1

자바 스크립트 코드를 완전히 제어하는 ​​경우 ajax 요청을 시작할 때마다 변수를 증가시키고 요청이 완료되면 성공, 실패 또는 시간 초과로 감소시킬 수 있습니다. 진행중인 요청이있는 경우 항상이 방법으로 알 수 있습니다.

10

네이

 

$.ajax({ 
    type: 'get', 
    url: 'url', 
    data: { 
       email: $email.val() 
    }, 
    dataType: 'text', 
    success: function(data) 
    { 
     if(data == '1') 
     { 
      $response.attr('style', '') 
        .attr('style', "color:red;") 
        .html('Email already registered please enter a different email.'); 
     } 
     else 
     { 
      $response.attr('style', '') 
        .attr('style', "color:green;") 
        .html('Available'); 
     } 
    }, 
    beforeSend: function(){ 
       $email.addClass('show_loading_in_right') 
    }, 
    complete: function(){ 
       $email.removeClass('show_loading_in_right') 
    } 
}); 
 


beforeSend 당신은 아약스 요청이 막 시작했을 때해야하고, Ajax 요청이 완료 될 때 이 완료가 호출되는 과정을 다할 것입니다.
documentation

+0

나는 이것이 OP의 질문을 다루지 않는다고 생각합니다. 그는 요청을 보내기 전에 또는 요청이 완료된 후에 처리기를 발사하는 방법을 알고 싶지 않습니다. 요청이 * 진행 중일 때 특정 이벤트를 시작하려고합니다. ... – SexyBeast

4

당신이 좋아 수 있습니다

$(document).ready(function() { 
    var working = false; 
    $("#contentLoading").ajaxSend(function(r, s) { 
     $(this).show(); 
     $("#ready").hide(); 
     working = true; 
    }); 

    $("#contentLoading").ajaxStop(function(r, s) { 
     $(this).hide(); 
     $("#ready").show(); 
     working = false; 
    }); 

    $('#form').submit(function() { 
     if (working) return; 
     $.post('/some/url', $(this).serialize(), function(data){ 
      alert(data); 
     }); 
    }); 
}); 
4

는 아약스 요청을 취소하려면 사용

if($.active > 0){ 
ajx.abort();//where ajx is ajax variable 
} 

를 아약스 요청을 계속 실행하려면 사용

if($.active > 0){ 
return; 

} 
+0

$ .active에 관한 설명서를 찾을 수 없습니다. 이 기능을 적용하기위한 몇 가지 예를 보여줄 수 있습니까? –

+0

@ 가넷, 다음 게시물을보십시오. http://stackoverflow.com/questions/3148225/jquery-active-function. – StartCoding