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

Problema con formulario de contacto en ajax

Estas en el tema de Problema con formulario de contacto en ajax en el foro de Frameworks JS en Foros del Web. Pues eso, que estoy empezando con ajax y en este peuqueño script de formulario de contacto no encuentro donde está el error, pero el caso ...
  #1 (permalink)  
Antiguo 12/05/2010, 08:05
 
Fecha de Ingreso: febrero-2010
Mensajes: 14
Antigüedad: 14 años, 10 meses
Puntos: 0
Problema con formulario de contacto en ajax

Pues eso, que estoy empezando con ajax y en este peuqueño script de formulario de contacto no encuentro donde está el error, pero el caso es que creo que al php no le llegan las variables de ajax, no sé, a ver si podéis ayudarme. Os dejo los códigos:



Este es el código javascript:

Código:
function crearXMLHttpRequest() 
{
  var xmlHttp=null;
  if (window.ActiveXObject) 
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  else 
    if (window.XMLHttpRequest) 
      xmlHttp = new XMLHttpRequest();
  return xmlHttp;
}
function recibirDatos(){
	var resultados = document.getElementById("results");
	if (conexion1.readyState == 4) {
    	resultados.innerHTML = conexion1.responseText;
    }
	else{
		resultados.innerHTML = '<span>Enviando...</span>';
	}
}
function enviarMensaje(){
	var nombre = document.getElementById("nombre").value;
	var mail = document.getElementById("mail").value;
	var asunto = document.getElementById("asunto").value;
	var texto = document.getElementById("texto").value;
	var conexion1 = crearXMLHttpRequest();
	conexion1.onreadystatechange = recibirDatos();
	conexion1.open("POST", "contactValidation.php",true);
	conexion1.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	conexion1.send("nombre="+nombre+"&asunto="+asunto+"&mail="+mail+"texto="+texto);
}
Aquí el html:

Código HTML:
<h1><b>Formulario de contacto con abriendo-camino.org</b></h1>
<p>[email protected]</p>
<p>Todos los campos son obligatorios</p>
<form id="contacto" name="contacto" method="post" action="">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td><br />
        <span>Nombre:</span><br />
        <br /> </td>
      <td>
        <input name="nombre" type="text" class="textfield" id="nombre" /></td>
    </tr>
    <tr>
      <td><br />
        <span>Asunto:</span><br />
      <br /></td>
      <td>
        <input name="asunto" type="text" class="textfield" id="asunto" /></td>
    </tr>
    <tr>
      <td><br />
        <span>E-mail de contacto:</span><br />
      <br /></td>
      <td>
        <input name="email" type="text" class="textfield" id="mail" /></td>
    </tr>
    <tr>
      <td><span>Texto del mensaje:</span></td>
      <td>
        <textarea name="texto" cols="45" rows="5" class="textarea" id="texto"></textarea></td>
    </tr>
    <tr>
      <td></td>
      <td><p></p>
                <input name="enviar" type="submit" class="buton" id="enviar" value="Enviar" onClick="enviarMensaje()"/>
      </td>
    </tr>
  </table>
</form>
<div id="results"></div> 
Y aquí el php:

Código PHP:
<?
$email 
"[email protected][email protected]";
$error 0;
$nombre $_POST['nombre'];
$asunto $_POST['asunto'];
$mail $_POST['mail'];
$texto $_POST['texto'];
if(
$nombre == "" || $mail == "" || $texto == ""){ $error=1;
}
elseif(!
eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$mail)){
$error=2;
}
if(
$error==1){
$error "<p>No ha rellenado todos los campos.</p>";
echo 
$error;
}
elseif(
$error==2){
$error "<p>¡Escriba un correo electrónico válido!</p>";
echo 
$error;
}
else{ 
$message "Mensaje envíado por un usuario de abriendo-camino.org, por favor, contéstale.<br><br>";
$message .="NOMBRE: ".$nombre."<BR>";
$message .="ASUNTO: ".$asunto."<BR>";
$message .="E-MAIL DE CONTACTO: ".$mail."<BR>";
$message .="TEXTO DEL MENSAJE:<BR>".$texto."<BR>";
$message stripslashes($message);
$headers .= "Content-type:text/html; charset=utf-8\r\n";
$headers .= "From: $email\r\n";
$headers .= "Repaly-to: $email\r\n";
$headers .= "Cc: $email\r\n";
mail($email,$asunto,$message,$headers);
echo 
"<p>¡Enhorabuena! Su mensaje ha sido enviado.</p>";
echo 
"<p>Le intentaremos contestar lo antes posible, gracias.</p>";
}
?>
  #2 (permalink)  
Antiguo 12/05/2010, 08:55
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 11 meses
Puntos: 9
Respuesta: Problema con formulario de contacto en ajax

y que pasa si en vez de <input type="submit"> lo cambias a <input type="button">
__________________
Quitenme la vida pero no la bebida.
  #3 (permalink)  
Antiguo 12/05/2010, 17:20
 
Fecha de Ingreso: febrero-2010
Mensajes: 14
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problema con formulario de contacto en ajax

Pues que sigue sin funcionar. Gracias por responder tan rápido.
  #4 (permalink)  
Antiguo 13/05/2010, 02:24
 
Fecha de Ingreso: noviembre-2009
Mensajes: 8
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Problema con formulario de contacto en ajax

prueba a pasarlas primero por Get, y si te funciona se entenderá que el problema está en la llamada. Yo es que por post nunca he probado, por eso seria lo primero que probaria
  #5 (permalink)  
Antiguo 13/05/2010, 03:22
 
Fecha de Ingreso: noviembre-2009
Mensajes: 8
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Problema con formulario de contacto en ajax

Código:
function retornarDatos()
{
  var cad='';
  var nom=document.getElementById('nombre').value;
  var com=document.getElementById('comentarios').value;
  cad='nombre='+encodeURIComponent(nom)+'&comentarios='+encodeURIComponent(com);
  return cad;
}

var conexion1;
function enviarFormulario() 
{
  conexion1=crearXMLHttpRequest();
  conexion1.onreadystatechange = procesarEventos;
  conexion1.open('POST','pagina1.php', true);
  conexion1.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  conexion1.send(retornarDatos());  
}
fijate en ese caso, utiliza una especie de codificacion antes de enviarlos, quiza sea eso
  #6 (permalink)  
Antiguo 13/05/2010, 18:52
 
Fecha de Ingreso: febrero-2010
Mensajes: 14
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problema con formulario de contacto en ajax

Nada, ni con el método GET ni codificando las variables. Gracias por las respuestas.
  #7 (permalink)  
Antiguo 13/05/2010, 19:36
 
Fecha de Ingreso: febrero-2010
Mensajes: 14
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problema con formulario de contacto en ajax

Haciendo pruebas he visto que sacando var conexion1; fuera de la función empieza el procesa de ajax pero nunca llega al estado 4 la conexion. No sé por qué
  #8 (permalink)  
Antiguo 14/05/2010, 05:09
 
Fecha de Ingreso: enero-2005
Mensajes: 28
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: Problema con formulario de contacto en ajax

Has probado quitando los paréntesis de:

conexion1.onreadystatechange = recibirDatos();
  #9 (permalink)  
Antiguo 14/05/2010, 21:03
 
Fecha de Ingreso: febrero-2010
Mensajes: 14
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problema con formulario de contacto en ajax

Muchas gracias, ahí estaba el error, pero no entiendo por qué sucede esto?

Etiquetas: ajax, contacto, 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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:54.