Buenas, es la segunda vez que hago algo con ajax... y me está volviendo loco.
Tengo un formulario de contacto bastante simple, pide 4 datos y manda los campos aun mail que le especifico en el archivo .php
Con Safari no hace nada (bueno si, me pone los _POST en la URL), ademas parece como si no le gustara el document.getElementById...
Con Firefox si que parece k funciona, solo que no envia el mail.
Llevo un rato buscando por todas partes (tanto en el codigo como por internet) y no consigo ver una solucion. De hecho ese codigo està reciclado de otra web, aunk cambiando algunas cosas que no deberian molestar....
Mi codigo:
HTML:
Código:
<div id="caixa_contacte">
<div id="tancar_contacte"><a href="#">Tancar [X]</a></div>
<h1>Contacte</h1>
<p>
<form onsubmit="enviarMail(); return false" action="" name="form_contacte">
<p>Nom: <input name="name" type="text" size="16" maxlength="16" /> </p>
<p>Assumpte: <input name="subject" type="text" id="subject"size="32" maxlength="32" /></p>
<p>e-mail: <input name="mail" type="text" id="mail" size="32" maxlength="32" /> </p>
<p>Missatge: <br /> <textarea name="missatge" cols="40" rows="24" id="missatge"></textarea></p>
<p><input type="submit" value="Enviar" />
</form></p></p>
<div id="resultado_mensaje" style="width:300px; height:30px; border:1px solid gray;">Resultado aqui.</div>
</div>
ajax:
Código:
function nuevoAjax(){
var xmlhttp=false;
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch(E){
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function enviarMail(){
c = document.getElementById('resultado_mensaje');
//variable=documenet.nombre_del_form.nombre_del_control.value
name=document.form_contacte.name.value;
subject=document.form_contacte.subject.value;
mail=document.form_contacte.mail.value;
missatge=document.form_contacte.missatge.value;
ajax=nuevoAjax();
c.innerHTML = '<p style="text-align:center;"><img src="esperando.gif"/></p>';
ajax.open("POST", "sendform.php",true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
c.innerHTML = ajax.responseText
}
borrarCampos()
}
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ajax.send("nom="+name+"&subject="+subject+"&mail="+mail+"&missatge="+missatge)
}
function borrarCampos(){
document.form_contacte.name.value="";
document.form_contacte.subject.value="";
document.form_contacte.mail.value="";
document.form_contacte.missatge.value="";
document.form_contacte.name.focus();
}
Y por ultimo el php:
Código:
<?php
$name=$_POST['name'];
$subject=$_POST['subject'];
$mail=$_POST['mail'];
$missatge=$_POST['missatge'];
$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";
//Estoy recibiendo el formulario, compongo el cuerpo
$missatge = "Missatge enviat per " . $name . ", amb el tema " . $subject . " \r\n";
$missatge .= "El seu e-mail es: " . $mail . " \r\n";
$missatge .= "Missatge: " . $_POST['missatge'] . " \r\n";
$missatge .= "Enviat el " . date('d/m/Y', time());
//mando el correo...
$pera = '[email protected]'; //la direccion que tengo en el script funciona, comprobado.
mail($pera, $subject, utf8_decode($missatge), $header);
//doy las gracias por el envio
echo "<div style="background-color:green;color:white;padding:4px;text-align:center;">Gracias por rellenar el formulario. Se ha enviado correctamente. Enviale a otros contactos</div>";
?>
Tambien aceptaria amablemente cualquier referencia a alguna pàgina con un script que pueda adaptar y funcione....
grácias de antemano.