Mostrar Mensaje Mientras Ajaxsubmitbutton Responde

Muy buenas a todos!!

Estoy de paso por aquí ya que tengo algún tiempo buscando respuesta de mi duda y no logro conseguirla, pues quise ser un poco mas directo y preguntar. Estoy usando Yii desde muy poco, de hecho soy programador desde hace muy poco y quise comenzar con frameworks de una vez.

Mi problema es que tengo una web, ya he logrado ciertos avances interesantes para mi skill pero hay algo que no logro hacer.

Tengo este botón en ajax


echo CHtml::ajaxSubmitButton(

                'ENVIAR',

                Yii::app()->createUrl('site/ejecutarRecuperacion'),

                array(

                  'type'=>'POST',

                  'update'=>'#u210-7',

                  'data'=>array('email'=>'js:LoginFormemail.value'),

                  ),array('id'=>'boton','name'=>'boton')  

                );  


                ?>

Buenísimo me funciona, un lujo total, logro realizar toda la función ejecutarRecuperacion de mi SiteController y me muestra el mensaje en la misma pagina sin recargar nada UNA PAVADA!!!. Pero como la función ejecutarRecuperacion ejecuta al final el envío de un correo puede que este tarde algunos segundos en responder pero como la pagina no recarga nada, no se sabe si es que el botón esta dañado o algo así, puede causar confusión. Hay alguna forma o método para hacer algo mientras eso pase… Es decir, mostrar un mensaje, una imagen, lo que sea mientras la función se ejecuta?? Algo así como ESPERE POR FAVOR MIENTRAS PROCESAMOS SU SOLICITUD…

Me puede recomendar algo?, incluso algo para leer que no sea complicado para que un novato como yo pueda realizarlo. Lo agradecería muchísimo.

Espero haberme podido explicar. Un saludo amigos. Gracias de antemano por la ayuda que me puedan dar.

‘beforeSend’ => ‘js:function() { etc }’

Ahí puedes decirle lo que hacer justo antes de hacer el envío. Por ejemplo puedes poner que se muestre un gif oculto para que el usuario vea que se está procesando algo, o simplemente un texto.

Después con

‘success’ => ‘js:function() { etc }’ tendrías que hacer que se ocultase el gif o el text o cualquier cosa que hayas puesto anteriormente.

Si vas a usar el manejo de errores de jquery, en vez de hacer el final en succes, te conviene esconderlo en el evento complete

Por algún motivo en concreto?

UNA PAVADA!!!

hahahaha me ha quedado de lujo total… Hice un div hermoso con un texto Por favor espere… que me ha quedado impresionante… La verdad que muchas gracias.

Para que quede en el historial del foro y alguien pueda servirle lo hice asi


'beforeSend' => 'js:function() {  jQuery("#mensaje").fadeIn(); }',

'complete' => 'js:function() {  jQuery("#mensaje").fadeOut(); }',

No use success porque por alguna razon que desconozco (no tengo muy claro el comportamiento del jquery y ese parametro) la pagina no me muestra el resultado de la funcion. Pasa que en la mencionada funcion de mi controlador luego de hacer todo hago un echo con el respectivo mensaje. Con success no me sale pero con complete si.

Mientras mas me adentro en este mundo mas me gusta… :D muchas gracias amigos… Un saludo y un abrazo enorme.