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

Problema con ajax para enviar formulario de contacto

Estas en el tema de Problema con ajax para enviar formulario de contacto en el foro de Frameworks JS en Foros del Web. Hola señores Prepare un formulario de contacto que se comunica con ajax con el PHP de enviar, pero la funcion de ajax no esta trabajando ...
  #1 (permalink)  
Antiguo 03/06/2010, 20:58
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 10 meses
Puntos: 7
Problema con ajax para enviar formulario de contacto

Hola señores

Prepare un formulario de contacto que se comunica con ajax con el PHP de enviar, pero la funcion de ajax no esta trabajando bien, porque ni siquiera recibo respuesta del "objeto.readyState". Seria posible que le hechen un ojo a ver que estoy haciendo mal ??

Asi tengo el formulario en el HTML:

Código HTML:
<form name="contactarme" method="post" onsubmit="setEmailSender(); return false">
<input type="text" name="tfNm" id="tfNm" value="Nombre" title="Tu nombre" />
<input type="text" name="tfEm" id="tfEm" value="Email" title="Tu email" />
<textarea name="tfMs" id="tfMs" wrap="SOFT" title="Tu mensaje">Mensaje</textarea>
<input type="submit" value="enviar" title="Enviar tu mensaje" />
<div class="conOK" id="msOK"></div>
</form> 
Esto es mi funcion de ajax:

Código HTML:
function setEmailSender ()
{
	var dtNm = document.getElementById('tfNm').value;
	var dtEm = document.getElementById('tfEm').value;
	var dtMs = document.getElementById('tfMs').value;
	var msOK = document.getElementById('msOK');
	//
	if (dtNm && dtEm && dtMs && dtNm != 'Nombre' && dtEm != 'Email' && dtMs != 'Mensaje' )
	{
		setMail ();
	} else {
		showResp ('Los campos de Nombre, Email y Mensaje son obligatorios. Complétalos adecuadamente para poder comunicarme contigo.');
		return;
	};
	//
	function setAjax ()
	{
		var xmlhttp = false;
		//
		try {
			xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
		} catch (eff)
		{
			try {
				xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
			} catch (eex)
			{
				xmlhttp = false;
			};
		};
		//
		if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
		{
			xmlhttp = new XMLHttpRequest ();
		};
		//
		return xmlhttp;
	};
	//
	function setMail ()
	{
		var ajax = setAjax ();
		//
		msOK.innerHTML = '';
		msOK.style.display = 'none';
		//
		ajax.open ('post', 'index_sendmail.php', false);
		ajax.onreadystatechange = function ()
		{
		if (ajax.readyState == 0)
			{
				alert ('Funcionando - 0');
			};
			//
			if (ajax.readyState == 1)
			{
				alert ('Funcionando - 1');
				showResp ('Espera, enviando tu mensaje.');
			};
			//
			if (ajax.readyState == 2)
			{
				alert ('Funcionando - 2');
				showResp ('Procesando tu mensaje, un momento más.');
			};
			//
			if (ajax.readyState == 4)
			{
				alert ('Funcionando - 4');
				showResp (ajax.responseText);
				//
				dtNm.value = '';
				dtEm.value= '';
				dtMs.value = '';
			};
		};
		//
		ajax.setRequestHeader ('Content-Type', 'application/x-www-form-urlencoded');
		ajax.send ('tfNm=' + dtNm + '&tfEm=' + dtEm + '&tfMs=' + dtMs);
	};
	//
	function showResp (txt)
	{
		msOK.onclick = function () { this.style.display = 'none'; };
		msOK.style.cursor = 'pointer';
		msOK.innerHTML = '';
		msOK.style.display = 'block';
		msOK.innerHTML = txt;
	};
};
Esto es la aplicacion en PHP:

Código PHP:
<?php

    $recipient 
'[email protected]';
    
$subject 'Contacto Web - http://junihh.com';
    
    
$name $_POST['tfNm'];
    
$email $_POST['tfEm'];
    
$message $_POST['tfMs'];
        
    
$header  "MIME-Version: 1.0\r\n";
    
$header .= "Content-type: text/html; charset=iso-8859-1\r\n";
    
$header .= "To: Junior Hernandez <" $recipient ">\r\n";
    
$header .= "From: " $name " <" $email ">\r\n";
    
$header .= "Reply-to: " $email "\r\n";
    
$header .= 'X-Mailer: PHP/' phpversion();

    
// -------------------------------------------------------------
    
    
function checkEmail($ema)
    {
        
        if (
eregi("^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]"$ema)) 
           {
              return 
FALSE;
           }
        
           list(
$Username,$Domain) = split("@",$ema);
        
           if ( 
getmxrr($Domain,$MXHost) ) 
           {
            
              return 
TRUE;
            
        } else {
               
              if (@
fsockopen($Domain25$errno$errstr30)) 
              {
                     return 
TRUE;
              } else {
                     return 
FALSE
              }
           }
    }
    
    
$emailValid checkEmail($email);
    
    
// -------------------------------------------------------------
    
    
if ( !$emailValid || empty($name) || empty($email) || empty($message) || $name == 'Nombre' || $email == 'Email' || $message == 'Mensaje' )
    {
            
        echo 
'Los campos de Nombre, Email y Mensaje son obligatorios. Complétalos adecuadamente para poder comunicarme contigo.';
            
    } else {
            
        if ( 
mail($recipient$subject$message$header) )
        {
            echo 
'Mensaje enviado. Te contactaré lo más pronto posible.';
        } else {
            echo 
'Sucedió un error al enviar el mensaje, inténtalo nuevamente.';
        }
    }

?>
Probe enviando directamente con el PHP y funciono, asi que estoy seguro que el problema viene con la funcion de ajax. Gracias de antemano a cualquier ayuda, link o idea que me puedan ofrecer.
__________________
JuniHH
- Mi blog
- Mi portafolio

Etiquetas: ajax, contacto, enviar, formulario
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:38.