2009-09-18 10 views
5

Wdrożyłem blokowy interfejs użytkownika, ponieważ to żądanie może zająć trochę czasu, gdy żądanie ajaxowe zacznie działać zgodnie z oczekiwaniami.blockUI działa, ale unBlockUI nie jest

Ale gdy zapytanie ajax zakończy się i pojawi się okno msgbox, interfejs użytkownika nie zostanie odblokowany!

Wszelkie pomysły?

Używam IE8.

$().ajaxStart($.blockUI); 
$().ajaxStop($.unblockUI); 

function ChangeCompanyState(companyId, state) { 
    var parameters = "{companyId:" + companyId + ",state:\"" + state + "\"}"; 
    $.ajax({ 
     type: "POST", 
     url: "Ajax/AjaxFragments.aspx/ChangeCompanyState", 
     data: parameters, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(msg) { 
      if (msg.d.length > 1) { 
       alert(msg.d); 
       $.unblockUI(); 
      } 
      else { 
       //Theres no message to process success. 
       window.location.reload(); 
      } 
     } 

    }); 
} 

Odpowiedz

0

Jak powiedział here korzystając

<meta http-equiv="X-UA-Compatible" content="IE=7" /> 

wydaje się rozwiązać problem. Nie udało mi się rozwiązać go w moim własnym projekcie.

7
$.unblockUI(); 
$(".blockUI").fadeOut("slow"); 
+0

+1 Rozwiązanie to właśnie uratowało mnie z ogromnym bólem głowy. Dzięki!! – lhan

+0

Jest to obejście problemu, ale działało idealnie. Zapakowałem drugą linię z 'if ($ .browser.msie && $ .browser.version <9) {' –

+0

Dzięki mister: D – Harsha

4

Miałem to samo i rozwiązano, stosując parentezę w zdaniu unluluUI.

// block when ajax activity starts 
function beginRequestHandler(sender, args) { 
    $.blockUI({ message: '<h1><img src="loading.gif" /> Just a moment...</h1>' }); 
} 

// unblock when ajax activity stops 
function endRequestHandler(sender, args) { 
    $.unblockUI(); // previously was $.unblockUI; 
} 

HTH Milton

+0

rzeczywiście ma sens, bez nich nie w rzeczywistości wywołujesz funkcję. Dokumentacja stwierdza jednak, że to działa. – peterrus

Powiązane problemy