2010-05-20 67 views
5

tengo el siguiente código una página aspx MVC .net ...jQuery BlockUI mensaje de bloqueo no muestra inmediatamente

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

$ .blockUI ({mensaje: '

Procesando ... Espere

'});

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

$ .unblockUI();

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

El bloque de mensaje no aparece hasta que a la vuelta de la segunda vez que la función termina. Ambas funciones recopilan datos de forma y luego realizan llamadas asincrónicas a la base de datos.

necesito el mensaje para mostrar de inmediato, tener ambas funciones fuego, a continuación, una vez que ambos se han completado, la interfaz de usuario se desbloqueó ...

¿Cómo se hace esto?

Gracias por cualquier comentario.

Respuesta

8

Hola, no tengo una respuesta para esto, pero solo quería informar que estoy viendo el mismo problema en Firefox 3.5.9.

Estoy tratando de usar blockUI para mostrar un mensaje de espera con un gif animado mientras el servidor procesa la información enviada a través de un formulario. .

Dentro de las $ ("# forma") presente (function() { primero que llamo blockUI: $ .blockUI ({mensaje: -imagen aquí- Procesando su solicitud, por favor espere ...'});

Entonces preparar los datos para ser enviados al servidor y publicarlos con una llamada sincrónica ajax: $ .ajax ({ tipo: "POST", url: '/ submitForm /' + typeName, de datos: postdata + "&" + sdata, caché: falsas, asincrónicos: falsa });

y al final puedo desbloquear $ .unblockUI();

Me di cuenta de que funciona con Konqueror (en KDE4), muestra la ventana de espera con el gif animado oscureciendo el fondo y desaparece al final.

Así que el problema podría estar relacionado con Firefox, o tal vez con alguna configuración incorrecta que no afecte a ese navegador en particular.

Espero que esta información sea útil para algunos expertos en averiguar cuál es el problema real.

También agradecería cualquier comentario.

EDIT:

Hola,

No sé si esto sigue siendo relevante, pero al final me las arreglé para hacer que funcione.El problema era que estaba haciendo una llamada síncrona con ajax (el bit "async: false" en la llamada a submitForm). Se cree que BlockUI hace que una llamada asíncrona funcione como si fuera síncrona, es decir, bloqueando la interfaz. Si la llamada ya es sincrónica, no es necesario bloquear la interfaz de usuario, ¡porque ese es el comportamiento normal de las llamadas sincrónicas!

Así que para mí, simplemente eliminar la parte "async: false" lo hizo funcionar.

Espero que esto ayude.

+0

Que hizo el truco para mí :) –

6

Trate de eliminar el comportamiento asíncrono de blockUI estableciendo fadeIn a 0:

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

Esto fija mi problema. ¡Gracias! – Angela

Cuestiones relacionadas