Foros del Web » Programando para Internet » Javascript » Frameworks JS »

"enviando" email con xajax

Estas en el tema de "enviando" email con xajax en el foro de Frameworks JS en Foros del Web. Hola, bueno hace tiempo que estaba practicando con el xajax y me ha ido bien, ahora lo que estoy aplicando es un formulario de contactenos ...
  #1 (permalink)  
Antiguo 23/06/2009, 15:58
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
"enviando" email con xajax

Hola, bueno hace tiempo que estaba practicando con el xajax y me ha ido bien, ahora lo que estoy aplicando es un formulario de contactenos con este metodo:

*He podido validar el formulario y tambien he podido enviar el correo, pero ahi es el detalle... cuando envio el correo (osea presiono el boton enviar) se muestra el cursor de carga (el reloj de arena) que se supone indica que esta enviando el mensaje, pero el problema es que yo puedo seguir presionando y presionando el boton... y sigo y sigo enviando el correo y eso esta mal !!

Lo que yo quiero es que desaparezca el boton cuando envie el mail y salga un gif "loading" , lo que hice es poner el boton dentro de un div y cuando se envia se ejecute el Assign() , pero no se como indicarle a mi funcion xajax cuando se esta enviando el correo, aqui pongo mi funcion de envio de email:

Código PHP:
function validar_email($email) {    
    return 
preg_match('/^(([^<>()[\]\\.,;:\s@"\']+(\.[^<>()[\]\\.,;:\s@"\']+)*)|("[^"\']+"))@((\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])|(([a-zA-Z\d\-]+\.)+[a-zA-Z]{2,}))$/'$email);
}

function 
procesar_contacto($form_entrada){
   
//creo el xajaxResponse para generar una salida
   
$respuesta = new xajaxResponse();
   
$respuesta->setCharacterEncoding('ISO-8859-1');
   
   
//validación
   
$error_form "";
   if (
$form_entrada["nombre"] == ""){
      
$error_form "* Debe escribir su nombre";
      
$marca "focus1";}
   elseif (
$form_entrada["postal"] == ""){
      
$error_form "* Debe escribir su nº postal";
      
$marca "focus2";}
   elseif (
$form_entrada["telefono"] == ""){
        
$error_form "* Debe escribir su teléfono";
      
$marca "focus3";}
   elseif (
$form_entrada["email"] == ""){
      
$error_form "* Debe escribir su e-mail";
      
$marca "focus4";}
    elseif (!
validar_email($form_entrada["email"])){
      
$error_form "* El e-mail es invalido";
      
$marca "focus4";}
   elseif (
$form_entrada["requerimiento"] == ""){
      
$error_form "* Debe escribir sus requerimientos";
      
$marca "focus5";}
      
   
//compruebo resultado de la validación
   
if ($error_form != ""){
      
//Hubo un error en el formulario
      //en la capa donde se muestran mensajes, muestro el error
      
$respuesta->Assign("alert","innerHTML","<span style='color:red;'>$error_form</span>");
      
$respuesta->Assign("focus1","innerHTML","");
      
$respuesta->Assign("focus2","innerHTML","");
      
$respuesta->Assign("focus3","innerHTML","");
      
$respuesta->Assign("focus4","innerHTML","");
      
$respuesta->Assign("focus5","innerHTML","");
      
$respuesta->Assign($marca,"innerHTML","<span style='color:red; font-size:10px;'>*</span>");
   }else{
     
//Aqui deberia aparecer el gif y desaparecer el boton
     
$salida '<img src="images/sending.gif" width="16" height="16" />'
     
$respuesta->Assign("success","innerHTML",$salida);
    
// ...................ENVIO EL CORREO CON PHPMAILER .......................//
          
if(!mail($para$asunto$cuerpo_html$header)){
            
$salida "No se pudo enviar su mensaje<br>en estos momentos";
            
$respuesta->Assign("success","innerHTML",$salida);
      }else{
            
$salida 'Su mensaje ha sido enviado<br>con éxito';
              
$respuesta->Assign("success","innerHTML",$salida);
      }  
   }
   return 
$respuesta;

Espero me puedan ayudar con alguna idea o si el metodo no es el adecuado para esta rutina, saludos
__________________
Quitenme la vida pero no la bebida.
  #2 (permalink)  
Antiguo 23/06/2009, 19:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: "enviando" email con xajax

Tema trasladado desde PHP
  #3 (permalink)  
Antiguo 24/06/2009, 08:32
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: "enviando" email con xajax

mmm alguna idea?
__________________
Quitenme la vida pero no la bebida.
  #4 (permalink)  
Antiguo 25/06/2009, 09:55
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: "enviando" email con xajax

bueno despues de un poco de investigación lo logre... xd

pues hay funciones xajax de javascript que te indican cuando una pagina carga... aunque no se puede evitar ese cursor de carga, puedes hacer acciones mientras se esta ejecutando, como poner un texto "espero" o imagen load o deshabilitar los inputs ... con esto:

Código:
<script type="text/javascript">
<!--
   function muestra_cargando(){
      xajax.$('loading').style.display='block';
     //aqui viene la accion que desees.
   }
   function oculta_cargando(){
      xajax.$('loading').style.display='none';
   }
   
   xajax.callback.global.onResponseDelay = muestra_cargando; 
   xajax.callback.global.onComplete = oculta_cargando;

// -->
</script>
Y cuando esta carga termina... se ejecuta el oculta_cargando() y se dispara la $respuesta-> de salida que tu hayas inidicado en tu funcion xajax, saludos!!!
__________________
Quitenme la vida pero no la bebida.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:42.