Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/07/2016, 03:00
Avatar de dryant
dryant
 
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 9 meses
Puntos: 10
Ajax con post no envía datos...

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!
__________________
Tecnología y tutoriales