2010-05-20 3 views
5

je le code suivant une .net page mvc aspx ...JQuery BlockUI le blocage des messages ne pas immédiatement montrer

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

$ .blockUI ({message: '

Traitement en cours ... Veuillez attendre

'});

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

$ .unblockUI();

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

Le message de bloc ne montre pas que juste le temps que la 2ème fonction se termine. Les deux fonctions collectent des données de formulaire puis effectuent des appels asynchrones à la base de données.

je dois le message pour montrer immédiatement, ont à la fois le feu des fonctions, puis une fois tous les deux sont terminés, l'interface se débloque ...

Comment puis-je faire cela?

Merci pour vos commentaires.

Répondre

8

Salut, je n'ai pas de réponse pour cela, mais je voulais juste signaler que je vois le même problème dans firefox 3.5.9. J'essaie d'utiliser blockUI pour afficher un message d'attente avec un gif animé pendant que le serveur traite les informations envoyées à travers un formulaire. .

A l'intérieur des $ ("formulaire #") soumettre (function() { d'abord j'appelle BlockUI: $ .blockUI ({message: -image ici- Traitement de votre demande, s'il vous plaît patienter ... »});

Ensuite, je prépare les données à envoyer et les poster sur le serveur avec un appel synchrone ajax: .ajax $ ({type : "POST", url: '/ submitForm /' + typeName, données: postdata + "&" + sData, cache: false, async: false });

et à la fin je déverrouiller $ .unblockUI();

J'ai remarqué que cela fonctionne avec Konqueror (dans KDE4), il montre la fenêtre d'attente avec le gif animé assombrissant l'arrière-plan et il disparaît à la fin. Donc le problème peut être lié à firefox, ou peut-être à une mauvaise configuration qui n'affecte pas ce navigateur particulier.

J'espère que cette information est utile à un expert pour déterminer quel est le problème réel.

Je serais également reconnaissant pour toute rétroaction.

EDIT:

Bonjour,

Je ne sais pas si cela est toujours d'actualité, mais à la fin j'ai réussi à le faire fonctionner.Le problème était que je faisais un appel synchrone avec ajax (le bit "async: false" dans l'appel submitForm). BlockUI est supposé faire fonctionner un appel asynchrone comme s'il était synchrone, c'est-à-dire bloquer l'interface. Si l'appel est déjà synchrone, il n'est pas nécessaire de bloquer l'interface utilisateur, car c'est le comportement normal des appels synchrones!

Donc, pour moi, il suffit de supprimer la partie "async: false" pour que cela fonctionne.

J'espère que cela aide.

+0

qui a fait l'affaire pour moi :) Ce –

6

Essayez d'éliminer le comportement async de BlockUI en mettant fadeIn à 0:

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

fixe mon problème. Je vous remercie! – Angela

Questions connexes