Pregunta:
Fecha: 05-04-2020 18:20:56
(En Español)
Estas son unas capturas de pantalla de el problema antes de realizar la validación en ajax.:

y cuando escribo un correo que ya existe en la bd me lo valida bien pero al validarlo agrega el header y footer así como se muestra en la imagen siguiente:


El resultado de la petición ajax la muestro en este div que dentro del formulario de registro d eusuario: <div id="validacion_email"></div>
Esta esta es la estructura de mi ventana modal:
en donde imprimo la respuesta en un :
tengo este archivo que contiene la petición ajax, que recibe los parámetros y los envía a el controlador de usuarios:
Posterior mente es recibido en el controlador el cual tiene esta estructura:
Después el controlador envía el email a el modelo de usuarios el cual tiene esta estructura:
El en el index ya incluyo el header y el footer no se que puede estar sucediendo el porque me repite el header y footer la estructura de el index.php es esta:
ya están incluidos el footer y header, no se por que me repite la cabecera espero me orienten soy algo nuevo en php apenas estoy comenzando con ajax y php ya que anterior mente solo hacia paginas que se refresacban para mostrar los datos, saludos. Uso MVC Votos: 0 - Respuestas: 1 - Vistas: 9 Compartir en: Google Facebook Twitter LinkedIn Link
ajax duplica header y footer usando MVC y php[No resuelta]
Hola,tengo un problema en el momento de mostrar el resultado de una petición Ajax en un div con su id, estoy usando mvc, y cuando valido si un correo esta ya en mi base de datos me muestra bien la validación, el problema es que me agrega el header y footer de mi sistema en el formulario, espero me orienten saludos.Estas son unas capturas de pantalla de el problema antes de realizar la validación en ajax.:

y cuando escribo un correo que ya existe en la bd me lo valida bien pero al validarlo agrega el header y footer así como se muestra en la imagen siguiente:


El resultado de la petición ajax la muestro en este div que dentro del formulario de registro d eusuario: <div id="validacion_email"></div>
Esta esta es la estructura de mi ventana modal:
<div class="modal fade" id="ModalRegistro" role="dialog">
<div class="modal-content modal-dialog ">
<div class="register-box">
<div class="register-logo mt-2 ">
<center><h1>Registrarse</h1><center>
</div>
<div class="card">
<div class="card-body register-card-body">
<p class="login-box-msg">Registrate como nuevo miembro</p>
<form action="<?=base_url?>Usuario/guardarUsuario" onsubmit="return registroUsuario();" method="post">
<div class="input-group mb-3">
<input type="text" id="regUsuario" name="usNombre" class="form-control" placeholder="Nombre Completo" maxlength="45" required>
<div class="input-group-append">
<span class="fa fa-user input-group-text"></span>
</div>
</div>
<div class="input-group mb-3">
<input type="email" id="regEmail" name="usEmail" class="form-control" placeholder="Email" required>
<div class="input-group-append">
<span class="fa fa-envelope input-group-text"></span>
</div>
<div id="validacion_email"> </div>
</div>
<div class="input-group mb-3">
<input type="password" id="regPassword" name="regPassword" class="form-control" placeholder="Password" maxlength="8" required>
<div class="input-group-append">
<span class="fa fa-lock input-group-text"></span>
</div>
</div>
<div class="input-group mb-3">
<input type="password" id="confirmPassword" name="confirmPassword" class="form-control" placeholder="Repite password" maxlength="8" required>
<div class="input-group-append">
<span class="fa fa-lock input-group-text"></span>
</div>
</div>
<div class="row">
<div class="col-8">
<div class="checkbox icheck">
<label>
<input id="terminos" type="checkbox"> Acepto <a href="#">terminos y condiciones</a>
</label>
</div>
</div>
<!-- /.col -->
<div class="col-4">
<button type="submit" class="btn btn-primary btn-block btn-flat">Listo!</button>
</div>
<!-- /.col -->
</div>
</form>
<div class="social-auth-links text-center">
<p>- Registrate con tu perfil -</p>
<a href="#" class="btn btn-block btn-primary">
<i class="fa fa-facebook mr-2"></i>
Regístrate usando Facebook
</a>
<a href="#" class="btn btn-block btn-danger">
<i class="fa fa-google-plus mr-2"></i>
Regístrate usando Google+
</a>
</div>
¿Ya tienes una cuenta? <a href="login.html" class="text-center">Iniciar sesión</a>
</div>
<!-- /.form-box -->
</div><!-- /.card -->
</div>
<!-- /.register-box -->
</div>
</div>
en donde imprimo la respuesta en un :
<div id="validacion_email"></div>
tengo este archivo que contiene la petición ajax, que recibe los parámetros y los envía a el controlador de usuarios:
$('#regEmail').change(function(){
$.post('<?=base_url;?>Usuario/valida_email_usuario',{
email:$('#regEmail').val(),
beforeSend:function(){
$('#validacion_email').html("Validando email...");
}
},function(respuesta){
$('#validacion_email').html(respuesta);
});
Posterior mente es recibido en el controlador el cual tiene esta estructura:
public function valida_email_usuario(){
if (isset($_POST)) {
// code...
$emailUser=$_POST['email'];
$usuario = new Usuario();
$usuario->setUserEmail($emailUser);
$validado=$usuario->valida_email();
if ($validado) {
// code...
echo "<label style='color:green'>Es valido!</label>";
}else {
echo "<label style='color:red'>El email ya esta registrado</label>";
}
}
}
Después el controlador envía el email a el modelo de usuarios el cual tiene esta estructura:
public function valida_email(){
$sql = "SELECT user_email FROM usuarios WHERE user_email = '{$this->user_email}'";
$valida = $this->db->query($sql);
$result=false;
if($valida->num_rows!=1) {
$result= true;
}
return $result;
}
El en el index ya incluyo el header y el footer no se que puede estar sucediendo el porque me repite el header y footer la estructura de el index.php es esta:
<?php
session_start();
require_once 'autoload.php';
require_once 'config/db.php';
require_once 'config/parameters.php';
require_once 'helpers/utils.php';
require_once 'views/layout/header.php';
require_once "views/carrito/index.php";
// function that show a error when the sistem Don´t work
function show_error(){
$error = new ErrorController();
$error->index();
}
// I am validating that controller has data
if (isset($_GET['controller'])) {
// code...
$nombre_controlador = $_GET['controller'].'Controller';
//
}elseif(!isset($_GET['controller']) && !isset($_GET['action'])){
$nombre_controlador = controller_default;
}else {
show_error();
exit;
}
//
if(class_exists($nombre_controlador)){
$controlador = new $nombre_controlador();
if (isset($_GET['action']) && method_exists($controlador,$_GET['action'])) {
// code...
$action = $_GET['action'];
$controlador->$action();
}elseif(!isset($_GET['controller']) && !isset($_GET['action'])) {
// code...
$action_default = action_default;
$controlador->$action_default();
}else {
show_error();
}
}else {
// code...
show_error();
}
require_once 'views/layout/footer.php';
require_once 'assets/js/ajax.php';
require_once 'assets/js/usuarios/ajax_usuario.php';
ya están incluidos el footer y header, no se por que me repite la cabecera espero me orienten soy algo nuevo en php apenas estoy comenzando con ajax y php ya que anterior mente solo hacia paginas que se refresacban para mostrar los datos, saludos. Uso MVC Votos: 0 - Respuestas: 1 - Vistas: 9 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 06-04-2020 10:16:34 Hola Gabo,
Dos cosas:
1. La respuesta es correcta, el problema es que el controlador utiliza la plantilla por defecto si no le especificas una. Lo que lleva al segundo punto:
2. Una respuesta AJAX por lo general no debe contener elementos de estilo, solo deberían ser datos en formato JSON (o XML). Esto evita generar dependencias innecesarias entre el frontend y el backend.
Tienes dos caminos a seguir:
1. Indicar a tu controlador que no utilice la plantilla por defecto o
2. Refactorizar tu código para que regreses un JSON y el frontend se haga 100% cargo de construir y desplegar el mensaje.
Espero esto te sirva.
Saludos Votos: 0 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
