2010-05-20 4 views
5

Ich habe den folgenden Code ein .net Mvc aspx Seite ...JQuery BlockUI Nachricht Blockierung zeigt nicht sofort

//////////////////////

$ .blockUI ({Nachricht: '

Verarbeitung ... Bitte warten

'});

var registerOk = registerNewUser(); var createUserSubscriptionOK = createUserSubscription();

$ .unblockUI();

\\\\\\\\\\\\

Der Block Meldung erst gerade um die Zeit, dass die zweite Funktion beendet. Beide Funktionen sammeln Formulardaten und führen dann asynch Aufrufe an die Datenbank aus.

Ich brauche die Nachricht sofort zu zeigen, haben beide Funktionen Feuer, dann einmal beide abgeschlossen sind, wird die ui deblockiert ...

Wie das ich tun?

Danke für jede Rückmeldung.

Antwort

8

Hallo Ich habe keine Antwort dafür, aber ich wollte nur berichten, dass ich das gleiche Problem in Firefox 3.5.9 sehe.

Ich versuche BlockUI zu verwenden, um eine Wartemeldung mit einem animierten GIF anzuzeigen, während der Server die Informationen verarbeitet, die über ein Formular gesendet werden. .

Innerhalb des $ ("# form") einreichen (function() { ersten nenne ich BlockUI: $ .blockUI ({Nachricht: -image hier- Ihre Anfrage wird bearbeitet, bitte warten ...‘});

Dann bereite ich die Daten an den Server gesendet werden und sie mit einem ajax-synchronen Aufruf schreiben: $ Schnipsel ({ Typ: "POST", url: '/ submitForm /' + Typnamen, Daten: Postdatum + "&" + sData, Cache: false, async: false });

und am Ende ich entsperren $ .unblockUI();

Ich bemerkte, dass es mit Konqueror (in KDE4) funktioniert, zeigt es das Wartefenster mit dem animierten gif verdunkelt den Hintergrund und es verschwindet am Ende.

Also könnte das Problem mit Firefox in Verbindung stehen, oder vielleicht mit einer Fehlkonfiguration, die diesen bestimmten Browser nicht betrifft.

Ich hoffe, diese Information ist nützlich für einige Experten herauszufinden, was das eigentliche Problem ist.

Ich wäre auch dankbar für jede Rückmeldung.

EDIT:

Hallo,

Ich weiß nicht, ob dies noch relevant ist, aber am Ende habe ich es geschafft, es Arbeit zu machen.Das Problem war, dass ich einen synchronen Aufruf mit ajax (das "async: false" Bit in dem SubmitForm-Aufruf) ausführte. Es wird angenommen, dass BlockUI bewirkt, dass ein asynchroner Anruf so arbeitet, als ob er synchron wäre, d.h. die Schnittstelle blockieren würde. Wenn der Aufruf bereits synchron ist, muss das ui nicht blockiert werden, da dies das normale Verhalten von synchronen Aufrufen ist!

So für mich, nur das Entfernen der "async: false" Teil hat es funktioniert.

Ich hoffe, das hilft.

+0

, die den Trick für mich getan hat :) –

6

Versuchen Sie das async Verhalten von BlockUI Beseitigung von fadeIn auf 0 setzen:

$.blockUI({ message: $('#domMessage'), fadeIn: 0 }); 
+0

Das ist mein Problem behoben. Vielen Dank! – Angela