Envio de form con ajax en yii2

Básicamente preciso enviar un formulario sin refrescarla página, lo único que debe refrescarse es solo un div dentro de la misma una vez se envíe la información, estoy trabajando sobre yii2, intente a través de añadiendo a un Activeform un beforesubmit, pero no funciona, ¿alguna idea?

1 respuesta

Respuesta
-1

Si no refrescas la página, seguramente los datos introducidos se queden visibles, no se, preo cuando mandas un formulario creo que siempre es mejor que se refresque y se queden en blanco

La idea es enviarlo por ajax, si bien se puede crear una función que vuelva y deje el formurio en limpio, preciso que el envío se haga por ajax y el mismo ajax refresque un div dentro de la página

A ver si esto te vale, puedes copiarlo tal y como esta,, eso si, no he podido conseguir que se envíe el nombre de quien accede al formulario, lo siento..., he usado phpmailer, al que le tendrás que cambiar algunos datos claro, si tienes ams dudas preguntame, necesitarías descargarte la librería phpmailer, con esta librería no llega como spam, y la librería js claro,

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Enviar formulario sin recargar</title>
<script language="javascript" src="jquery-1.3.min.js"></script>
<script language="javascript">
$(document).ready(function() {
$().ajaxStart(function() {
$('#loading').show();
$('#result').hide();
}).ajaxStop(function() {
$('#loading').hide();
$('#result').fadeIn('slow');
});
$('#form, #fat, #fo3').submit(function() {
$.ajax({
type: 'POST',
url: $(this).attr('action'),
data: $(this).serialize(),
success: function(data) {
$('#result').html(data);

}
})
return false;
});
})
</script>
<style type="text/css">
<!--
body,td,th {
color: #333333;
font-family:Arial, Helvetica, sans-serif;
font-size:12px;
}
fieldset {
width:380px;
margin:auto;
}
forma1 {
width:60px;
margin:auto;
background-color: #FEE7E9;
}
#result {
width:280px;
padding:10px;
border:1px solid #bfcddb;
margin:auto;
margin-top:10px;
text-align:center;
background-color: #FFC;
}
.forma {
background-color: #FFDFE8;
}
-->
</style>

<link href="stilo.css" rel="stylesheet" type="text/css" />

¿

<?php
$fnombres="fnombres";
?>

</head>

<body>
<form method="post" action="envio.php" id="fo3" name="fo3" >
<fieldset>
<legend>Perfil</legend>
<ol>
<li><label>Nombres:</label><input type="text" size="30" name="fnombres" class="forma" value=""/></li>
<li><label>Apellidos:</label><input type="text" size="30" name="fapellidos"class="forma" /></li>
<li><label>Correo:</label><input type="text" size="30" name="fcorreo"class="forma" /></li>
</ol>
<input type="submit" name="mysubmit" value="Enviar" />
</fieldset>
</div>
</form>
<div id="result"></div>
</body>

¿

<?php

include_once('../phpmailer/class.phpmailer.php');
include_once('../phpmailer/class.smtp.php');

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;
//Nuestra cuenta
$mail->Username ='@gmail.com'; Aqui tienes que poner tu correo
$mail->Password = ''; //tu password
//Agregar destinatario
$mail->AddCC("tu correo@gmail.com");

$mail->Body = 'hola , hemos recibido tus datos, (personifica el mensaje)

';

$mail->IsHTML(true);

if($mail->Send())

¿

?>

</html>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas