Codeigniter AJAX простая проверка формы - PullRequest
0 голосов
/ 28 сентября 2018

Я работаю над простой проверкой формы ajax.Когда поля пусты, мой код показывает правильную ошибку, но когда поля заполнены значениями, он все еще показывает пустые заполненные ошибки.

Вот мой код.

controller:

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 голосов
/ 03 октября 2018

Ваши правила должны иметь то же имя, что и ваши имена $ _POST ...

Так что одно исправление, и плохое, как я ненавижу сокращения, - это изменить имена полей в ваших правилах, чтобы они соответствовали вашимформа.

т.е.

$this->form_validation->set_rules('nm','Name','required');
$this->form_validation->set_rules('ps','Password','required');
0 голосов
/ 29 сентября 2018

Используйте form_open ("ваше действие формы") или form_open_multipart ("ваше действие формы") вместо тега формы.

См. Ниже URL

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

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