Проблема проверки формы с помощью AJAX jquery - PullRequest
0 голосов
/ 14 мая 2019

Я хочу проверить форму входа в систему, используя AJAX, но не могу заставить ее работать.Проблема в «успехе», я думаю.(Я использую платформу Codeigniter) Вот мой код:

контроллер:

function verificarSesion()
{
    if($this->input->post("submitLogin"))
    {
        $var = $this->usuariosModelo->verificarSesion();
        if($var)
        {
            $sesion = array("usuario" => $this->input->post("usuario"));
            $this->session->set_userdata($sesion);
            echo "0";
        }
        else
        {
            echo "1";
        }
    }
    else
    {
        echo "2";
    }
}

модель:

function verificarSesion()
{
    $consulta = $this->db->get_where("usuarios", array(
                                    "usuario"=>$this->input->post("usuario", TRUE),
                                    "contraseña"=>$this->input->post("contraseña", TRUE)));
    if($consulta->num_rows() == 1)
    {
        return true;
    }
    else
    {
        return false;
    }
}

просмотр:

<form name="formIni" id="formIni2" action="<?php echo base_url('verifSesion');?>" method="POST" >
<label for="usuario">Usuario</label>
<input type="text" name="usuario">

<label for="contraseña">Contraseña</label>
<input type="password" name="contraseña">

<input onclick="funcion()" type="submit" value="Login" name="submitLogin">

и скрипт:

function funcion()
{
    $("#formIni2").submit(function(event){
        event.preventDefault();
        $.ajax({ //envio por ajax los datas
            url: $(this).attr("action"),
            type: $(this).attr("method"),
            data: $(this).serialize(),
            success:function(resp){
                if(resp!=0)
                {
                    alert("not ok");
                }
                else
                {
                    alert("ok");
                }
            }
        });
    });
}

Без запроса AJAX все работает нормально, поэтому я думаю, что ошибка в скрипте.Я мог заметить, что переменная resp не получает значение.

Спасибо.

Редактировать 1: Я вижу "0" из эха, но такжееще два символа, которые я не знаю, откуда они взялись

Редактировать 2: я редактировал функцию контроллера "verificarSesion ()", теперь возвращаемое значение равно "0", "1" и "2", и я вижу, что всегда возвращают" 2 ".

1 Ответ

0 голосов
/ 14 мая 2019

Я нашел решение:

function verificarSesion()
{
    if ($this->input->method(TRUE) == "POST")
    {
        $var = $this->usuariosModelo->verificarSesion();
        if($var)
        {
            $sesion = array("usuario" => $this->input->post("usuario"));
            $this->session->set_userdata($sesion); //asigna una sesion
            echo "1";
        }
        else
        {
            echo "2";
        }
    }
    else
    {
        echo "3";
    }
}

Я просто должен изменить

если ($ this-> вход-> пост ( "submitLogin"))

для

if ($ this-> input-> method (TRUE) == "POST")

О функции контроллера.

А скрипт теперь такой:

function funcion()
{
    $("#formIni2").submit(function(event){
        event.preventDefault();
        event.stopImmediatePropagation();
        $.ajax({
            url: $(this).attr("action"),
            type: $(this).attr("method"),
            data: $(this).serialize(),
            success:function(resp){
                alert(resp.trim());
                if(resp.trim()==="1")
                {
                    window.location.href = "http://localhost/principal"
                }
                else
                {
                    alert("Los datos son incorrectos.");
                }
            }
        });
    });
}

Спасибо всем:).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...