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>";
}
?>