Codeigniter Ajax简单表单验证

时间:2018-09-28 15:56:46

标签: json ajax codeigniter-3

我正在研究一个简单的codeigniter ajax表单验证。当这些字段为空时,我的代码显示正确的错误,但是当这些字段填充有值时,它仍显示为空的填充错误。

这是我的代码。

控制器:

class Jsondemo extends CI_Controller {
    public function index()
    {
        $this->load->view('jsondemo_view');
    }
    public function check()
    {
        $name = $this->input->post('nm');
        $password = $this->input->post('ps');
        $this->load->library('form_validation');
        $this->form_validation->set_rules('name','Name','required');
        $this->form_validation->set_rules('password','Password','required');
        if($this->form_validation->run()==false)
        {
            $errors = validation_errors();
            echo json_encode(["error" => $errors,"status" => 0 //0 == false]);
        }
        else
        {
            echo json_encode(["success" => 'Record Check Successfully!',"status" => 1 // 1 == true]);
        }
    }
}

这是我的观点:

<form action="<?php echo base_url(); ?>jsondemo/check" method="post">
        <div class="form-group">
            <span class="alert alert-danger" style="display: none;"></span>
            <span class="alert alert-success" style="display: none;"></span>
        </div>
        <div class="form-group ">
            <label>Username</label>
            <input type="text" name="name" class="form-control" id="nm">
            <!-- <span class="text-danger"></span>   -->
        </div><br>
        <div class="form-group">
            <label>Password</label>
            <input type="text" name="password" class="form-control" id="ps">
            <!-- <span class="text-danger"></span> -->  
        </div>
        <br>
        <div class="form-group">
            <input type="submit" value="Login" class="btn btn-primary" id="abc">    
        </div>

    </form>

</div>
<script type="text/javascript">
    $(document).ready(function(){
        $('#abc').click(function(e){
            e.preventDefault();

            var name = $('#nm').val();
            var password = $('#ps').val();

            $.ajax({
                type : 'POST',
                url : 'jsondemo/check',
                data : {nm : name, ps : password},
                dataType : 'json',
                success : function(d)
                {
                    if(d.status == 1)
                    {
                        $('.alert-success').css('display', 'block');
                        $('.alert-danger').css('display', 'none');
                        $('.alert-success').html(d.success);
                    }
                    else
                    {
                        $('.alert-danger').css('display', 'block');
                        $('.alert-success').css('display', 'none');
                        $('.alert-danger').html(d.error);
                    }}});});});
</script>

您能帮我找到问题吗?

2 个答案:

答案 0 :(得分:0)

使用form_open(“您的表单操作”)或form_open_multipart(“您的表单操作”)代替 表单标签。

在URL下方引用

https://www.codeigniter.com/userguide3/libraries/form_validation.html

答案 1 :(得分:0)

您的规则必须与您的$ _POST名称具有相同的名称...

因此,一种解决方法,也是我讨厌缩写的一种不好的解决方法,是更改规则中的字段名称以匹配您的表单。

$this->form_validation->set_rules('nm','Name','required');
$this->form_validation->set_rules('ps','Password','required');