Hola,
Pues es que tampoco te creas que hay mucho más...o sea el resto del código no influye para nada en esto. Le doy a un botón en mi página web, y activo este javascript, en el cual pido un correo usando la función prompt y le muestro al usuario un confirm para que compruebe si lo ha escrito bien...y después ya llega esto, si el usuario le ha dado a aceptar:
function validarcorreo() {
'use strict';
var correo = prompt("Introduce tu correo");
var confirmar = confirm('El correo introducido es ' + correo + ' pulse OK para enviar, o Cancelar para volverlo a escribir');
if (confirmar === true) {
alert("Has dado a aceptar");
alert("Justo antes del httprequest");
xmlhttp = new XMLHttpRequest();
alert("Ha pasado el httprequest");
xmlhttp.onreadystatechange = function () {
alert("Dentro de onreadystate, antes del if");
if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
var respuestadeenvio = xmlhttp.responseText;
alert("La respuesta es" + respuestadeenvio);
} else {
alert("No ha funcionado el if de readyState");
}
alert("Justo pasado la funcion de onreadystate");
xmlhttp.open("GET", "borradorPHP.php?destinatario=" + correo);
xmlhttp.send();
}
}else {
alert("has dado a cancelar");
}
}
borradorPHP.php es el nombre del archivo, que no es más que un archivo que envía un correo, te lo adjunto por si acaso pero vamos que éste tampoco es el problema:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
$para=$_REQUEST["destinatario"];
$titulo = 'INFORMACIÓN';
$mensaje = 'Hola, \nhas recibido este correo porque has dado clic en mi página';
$cabeceras = 'From: otrocorreo@hotmail.com' . "\r\n" .
'Reply-To: hola@undominio.com\n' .
'X-Mailer: PHP/' . phpversion();
mail($para, $titulo, $mensaje, $cabeceras);
if (mail($para, $titulo, $mensaje, $cabeceras)) {
echo "Correo enviado y con éxito";
} else {
echo "No se ha podido enviar";
}
Bueno...hasta aquí ya sabes lo mismo que yo, así que espero que consigas resolverlo. Como ves, a priori no parece que haya nada extraño, y parece un ejemplo bastante sencillo...pero el problema parece estar en la función onreadystate.
Sobra decir que muchísimas gracias por tu atención y tu tiempo