使用AJAX jQuery验证表单时出现问题

时间:2019-05-13 21:29:24

标签: php jquery html ajax codeigniter

我想使用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请求,一切正常,这就是为什么我认为错误出在脚本中。 我可以看到的是var resp没有得到值。

谢谢。

编辑1: I can see the "0" from the echo but also two more characters that i don't know where they came from

编辑2: 我编辑了控制器函数“ verificarSesion()”,现在返回的是“ 0”,“ 1”和“ 2”,而且我看到的总是返回“ 2”。

1 个答案:

答案 0 :(得分:0)

我找到了解决方法:

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";
    }
}

我只需要更改

  

if($ this-> input-> post(“ 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.");
                }
            }
        });
    });
}

谢谢大家:)。