2011-02-17 12 views
0

프로젝트에서 jQuery BlockUI를 사용하고 있습니다. 특정 사용자 작업의 경우 UI를 차단하고 POST 데이터를 서버에 보내려합니다. 시간 초과 이벤트가 발생하거나 서버가 돌아 오면 페이지의 차단을 해제하고 싶습니다.jQuery blockUI 및 AJAX POST

이 동작을 구현할 수 없습니다. 이것은 내가 지금까지 가지고있는 것입니다 (작동하지 않습니다)

$(document).ready(function(){ 
    $('#test').click(function(event){ 
     $.blockUI({ message: $('#mydiv') }); 

     $.ajax({ 
       type: 'POST', 
       url: 'www.example.com', 
       data: somedata, 
       dataType: "json" 
     }); 

     setTimeout(function() { 
       $.unblockUI({ 
        onUnblock: function(){ 
         alert('onUnblock'); 
        } 
       }); 
      }, 2000); 
}); 

누구나 내가 잘못하고있는 것을 발견 할 수 있습니까?

+0

귀하의 UI가 차단되었다고 가정하지만 결코 차단 해제되지 않았습니까? – Tx3

답변

4

아약스의 성공, 오류 및 시간 초과 속성을 설정해야한다고 생각합니다. 다른 setTimeout을 사용하지 마십시오.

여기에 문서가 있습니다.

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

더 같이 :

$.ajax({ 
       type: 'POST', 
       url: 'www.example.com', 
       data: somedata, 
       dataType: "json", 
       timeout: /*your time*/, 
       success: function(result){ /*unblock*/ }, 
       error: function (xhr, ajaxOptions, thrownError){ /*unblock*/ } 
     }); 
0

를 사용하여 완전한 콜백

$.ajax({ 
      type: 'POST', 
      url: 'www.example.com', 
      data: somedata, 
      dataType: "json", 
      complete: function(){ 
      // unblock stuff here 
      } 
    }); 

성공과 완성의 차이는 전체가 AJAX 호출이 성공 여부라는 점이다. 성공 만 사용하면 AJAX 호출이 실패하면 UI가 차단 된 상태로 유지됩니다.

+0

'timeout' 속성을 추가 할 수도 있습니다. – Don