2012-09-25 2 views
1

다음 코드를 사용하여 'whatever.php'를 통해 데이터를 가져 오려고합니다. 이 PHP 파일은 데이터베이스 요청을받는 데 약 20 초를 소비합니다. 서버가 데이터로 응답 할 때까지 탐색기가 차단됩니다 (비동기로 설정하면 클릭을하거나 입력을 채울 수 있지만 언급 된 20 초 후에 만 ​​리디렉션됩니다). 이 Ajax 인스턴스를 중단하려고 시도했지만 중단 한 후에도 그 시간을 기다립니다.비동기 Ajax 요청 블록 네비게이터?

내가하려는 것은 사용자가 요청이 완료되고 테이블이 표시 될 때까지 기다리지 않으려면 다른 서브 페이지에 대한 링크를 열 수 있어야한다는 것입니다.

var contenidoAjax = $('div#table_solicitudes').html('<p><img src="'.URL.'images/ajax-loader.gif" /></p>'); 
var instanciaAjax=$.ajax({ 
url: whatever.php, 
success: function(data) { 
    if (data == "bad") { 
     $('div#table_solicitudes').html("Went bad"); 
    } 
    else { 
     $('div#table_solicitudes').html(data); 
    } 
} 

감사합니다.

+0

코드에서 탈출을 제거하십시오. – Bergi

+0

요청을 비동기식으로 만드는 것의 차이점은 무엇입니까? – Bergi

+0

예, 비동기입니다. 그것이 내가 질문을하는 이유입니다. 이 코드는 내가 이해하는대로 작동해야합니까? –

답변

1

표시기를 표시하거나 숨기려면 "beforeSend"및 "complete"메소드를 사용해야합니다.

예 :

$.ajax({ 
    url: whatever.php, 
    beforeSend: function(){ 
     $('div#table_solicitudes').html('<p><img src="'.URL.'images/ajax-loader.gif" /></p>'); // add indicator 
    }, 
    complete: function(){ 
     $('div#table_solicitudes').html(""); // remove indicator 
    } 
    // existing stuff 
} 

이 도움이되기를 바랍니다!

+0

고마워요.하지만 저는 별개의 답변으로 게시 할 예정입니다. –