控制器不将数据发送回ajax请求codeigniter

时间:2017-03-30 22:27:09

标签: ajax codeigniter

我使用ajax开发了一个登录系统问题是当我发送ajax请求时一切正常并且验证正常我只需要将数据传回我的ajax请求我正在使用 echo json_encode(“true”) ; 但不知何故,它只是在控制器中回显值true而不是回到视图中!

HTML

  <form onsubmit="return validate()" method="post" action="<?php echo base_url(); ?>admin/admin_login">
        <input class="md-input" placeholder="username" type="text" name = 'login_username'  id = 'login_username' />
        <input class="md-input" placeholder="password" type="password" name= 'login_password'  id= 'login_password' />
        <button type='submit' class="btn btn-primary btn-block btn-large">Login</button>
    </form>

AJAX

<script>

    function validate(){
        if(!$("#login_username").val()){
            alert("username is required");
            return false;
        }
        if(!$("#login_password").val()){
            alert("Password is required");
            return false;
        }
        return true;
        var data={
            "login_username" : $("#login_username").val(),
            "login_password" : $("#login_password").val()
        };
        $.ajax({
            type: 'post',
            url: '<?=base_url()?>Admin/admin_login',
            dataType: 'json',
            data:data,
            success: function (data) {
                if(data=="true"){
                    alert("ok");
                }
                else
                {
                    alert("not ok");
                }
            }
        });
    }
</script>

admin_login controller

 public function admin_login(){
        $data = $this->input->post();
        $status=$this->admin_validate->validate($data);
        if($status){
            $session=array(
                "admin"=>$this->input->post("login_username"),
            );

            $this->session->set_userdata($session);
            //redirect("Admin/contact");
            header('Content-Type: application/json');
            echo json_encode("true");
        }
        else
        {
            header('Content-Type: application/json');
            echo json_encode("false");
            //redirect("Admin");
        }
    }

3 个答案:

答案 0 :(得分:2)

现在我要改变代码

将HTML表单更改为

<form>
        <input class="md-input" placeholder="username" type="text" name = 'login_username'  id = 'login_username' />
        <input class="md-input" placeholder="password" type="password" name= 'login_password'  id= 'login_password' />
        <button type='button' onclick="validate()" class="btn btn-primary btn-block btn-large">Login</button>
    </form>

现在将你的ajax改为

<script>

    function validate(){
        if(!$("#login_username").val()){
            alert("username is required");
            return false;
        }
        if(!$("#login_password").val()){
            alert("Password is required");
            return false;
        }


        $.ajax({
            type: 'post',
            url: '<?php echo base_url()."Admin/admin_login"; ?>',
            data:{ "login_username" : $("#login_username").val(), "login_password" : $("#login_password").val() },
            success: function (data) {
                if(data=="true"){
                    alert("ok");
                }
                else
                {
                    alert("not ok");
                }
            }
        });
    }
</script>

和您的控制器

public function admin_login(){
        $data = $this->input->post();
        $status=$this->admin_validate->validate($data);
        if($status){
            $session=array(
                "admin"=>$this->input->post("login_username"),
            );

            $this->session->set_userdata($session);

            echo "true";
        }
        else
        {
            echo "false";   
        }
    }

希望这会对你有所帮助。 :)

答案 1 :(得分:0)

你是否试过在没有引号的情况下发送true或false?如果没有尝试创建数组然后将其传递给echo json_encode();类似的东西:

$result = array();
array_push($result, true);

echo json_encode($result);

在你的ajax上你必须按照以下方式阅读

if(data[0] == true){
    alert("Ok");
}else{
    alert("Not OK");
}

希望有所帮助

答案 2 :(得分:0)

您在脚本中返回true,因此表单已提交。没有ajax调用发生。

<script>

    function validate(){
        if(!$("#login_username").val()){
            alert("username is required");
            return false;
        }
        if(!$("#login_password").val()){
            alert("Password is required");
            return false;
        }
        return true;  // HERE THE ISSUE //
        var data={
            "login_username" : $("#login_username").val(),
            "login_password" : $("#login_password").val()
        };
        $.ajax({
            type: 'post',
            url: '<?=base_url()?>Admin/admin_login',
            dataType: 'json',
            data:data,
            success: function (data) {
                if(data=="true"){
                    alert("ok");
                }
                else
                {
                    alert("not ok");
                }
            }
        });
}