Hola a todos!
Llevo unos dias liado con un envio de un formulario que no acaba de funcionar y por mas que miro no encuentro donde esta el fallo.
Tengo 3 archivos: formulario.php, scripts2.js y sendmsg.php
En formulario.php tengo el siguiente codigo:
Código PHP:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Documento sin título</title>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/bootstrap.css">
<link rel="stylesheet" href="css/idarte.css">
<link href="https://fonts.googleapis.com/css?family=Titillium+Web:200,400,700|Cabin|Raleway:100" rel="stylesheet" type="text/css">
<meta name="viewport" content="initial-scale=1">
</head>
<body style="background-color:#fff !important">
<div class="container">
<div class="row">
<div class="col-md-12">
<form class="form-horizontal" role="form" >
<div class="form-group">
<div class="col-sm-offset-2 col-sm-4">
<label for="nombre" class="sr-only">Nombre</label>
<input type="text" class="form-control nombre" id="nombre" name="nombre" placeholder="nombre"/>
</div>
<div class="col-sm-4">
<label for="email" class="sr-only">email</label>
<input type="email" class="form-control email" id="email" name="email" placeholder="email" />
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-8">
<label for="mensaje" class="sr-only">mensaje</label>
<textarea class="form-control mensaje" rows="6" id="mensaje" name="mensaje" placeholder="mensaje"></textarea>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-8">
<button type="button" class="btn btn-default boton_envio" id="boton_envio">
enviar mensaje
</button>
<div id="respuesta"></div>
<div class="alert alert-success enviook nover" role="alert">¡Mensaje enviado!</div>
<div class="alert alert-danger errorenvio nover" role="alert">¡Ha habido un error en el envío!</div>
</div>
</div>
</form>
</div>
</div>
</div>
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/scripts2.js"></script>
</body>
</html>
Despues en scripts2.js tengo esto:
Código HTML:
var x=$(document);
x.ready(inicializar);
function inicializar(){
$("#boton_envio").on("click",enviar);
}
function enviar(){
//recoger variables <- ok
var nombre = $("#nombre").val();
var email = $("#email").val();
var validacion_email=/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/;
var mensaje = $("#mensaje").val();
//Comprobar variables <-ok
if(nombre == ""){
$("#nombre").focus();
return false;
}
if(mensaje == ""){
$("#mensaje").focus();
return false;
}
if(mensaje.length < 3){
$("#mensaje").focus();
alert("Mensaje demasiado corto");
return false;
}
if(email==""||!validacion_email.test(email)){
$(".email").focus();
return false;
}
//Enviar datos por post y Ajax
var datos='nombre='+nombre+'&email='+email+'&mensaje='+mensaje;
$('#respuesta').text(datos);
$.ajax({
type:"POST",
url:"sendmsg.php",
data:datos,
success:function(){
$('#boton_envio').hide();
$('.enviook').css('display','block');
$('.enviook').fadeOut(5000,function(){
$('.boton_envio').fadeIn('slow');
});
$('#respuesta').load('sendmsg.php');
$("#nombre").val("");
$("#email").val("");
$("#mensaje").val("");
}, //Fin function Success
error:function(){
$('.boton_envio').hide();
$('.errorenvio').css('display','block');
$('.errorenvio').fadeOut(5000,function(){
$('.boton_envio').fadeIn('slow');
});
} //Fin function Error
});
}
Y por ultimo en sendmsg.php tengo lo siguiente:
Código PHP:
<?php
// Guardar los datos recibidos en variables:
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$mensaje = $_POST['mensaje'];
echo "Hola $nombre te voy a enviar un email a $email con este mensaje:<br> $mensaje <br>";
// Definir el correo de destino:
$dest = "[email protected]";
// Estas son cabeceras que se usan para evitar que el correo llegue a SPAM:
$headers = "From: $nombre <$email>\r\n";
$headers .= "X-Mailer: PHP5\n";
$headers .= 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Aqui definimos el asunto y armamos el cuerpo del mensaje
$asunto = "Contacto";
$cuerpo = "Nombre: ".$nombre."<br>";
$cuerpo .= "Email: ".$email."<br>";
$cuerpo .= "Mensaje: ".$mensaje;
// Esta es una pequena validación, que solo envie el correo si todas las variables tiene algo de contenido:
if($nombre != '' && $email != '' && $mensaje != ''){
mail($dest,$asunto,$cuerpo,$headers);
echo "Se ha enviado"; //ENVIAR!
}else{
echo "Ha habido un error";
}
?>
Sin embargo las variables no llegan a sendmsg, esto se puede ver porque la funcion jquery que muestra la respuesta del servidor muestra elmensaje "Hola , te voy a enviar un mensaje a con este mensaje" sin cargar las variables....
Llevo varios dias haciendo pruebas y no consigo ver donde esta el fallo...
Alguien podria decirmelo??
Gracias!