Codeigniter ion auth和jquery表单验证

时间:2012-06-17 06:45:59

标签: jquery validation codeigniter

我只是试图让我的第一个jquery ajax登录,并且我在jquery中有点初学者。

我的问题是我真的无法弄清楚如何返回表单验证错误。

这是我的控制器。

   function login()
   {

        $this->form_validation->set_rules('email', 'Email', 'reqired|valid_email|callback_check_name');
        $this->form_validation->set_rules('password', 'Passsword', 'reqired|callback_check_pass');

        if($this->form_validation->run() !== FALSE){

            $identity = $this->input->post('email');
            $password = $this->input->post('password');
            $remember = TRUE; // remember the user
            $this->ion_auth->login($identity, $password, $remember);
        }

   }

   function check_email()
   {
     if(!$this->ion_auth->email_check($this->input->post('email')))
     {
        $this->form_validation->set_message('check_email', 'Cant find this email in database');
        return false;
     }
   }

   function check_pass()
   {
    $query = $this->db->query(" SELECT password FROM mma_users WHERE password = '".sha1($this->input->post('password'))."' ");

   if($query->num_rows() == 0)
   {
        $this->form_validation->set_message('check_pass', 'Incorrect password given');
        return false;       
   }
   }

login.js

$(function() {
        $('.top-login-form').on('submit', function(e){
        e.preventDefault();
        var loginInfo = $(this).serialize();

        $.ajax({
            type: "POST",
            url: "user/ajax/login",
            data: loginInfo,
            dataType: "json",
            success: function(data){
                alert('all ok');
            },
            error: function(data) {
                $('.login-info').slideDown();
                $('.login-info').html(data);
            }
        });

    });
});  

并向下滑动HTML

<div class="well login-info">
<div class="alert alert-error">
    <strong>Oh snap!</strong>
    <?php echo json_encode(validation_errors()); ?>
    <strong>Having troubles logging in?</strong>
        <div class="recover">
            <a href="#" class="btn btn-danger"><i class="icon-warning-sign icon-white"></i> Yes i think i forgot my password</a>
            <a href="#" class="btn btn-danger"><i class="icon-envelope icon-white"></i> Yes i think i forgot my email</a>
        </div>
</div>

我正面对以下问题,每次如果我插入错误的电子邮件或密码或正确的一个我总是收到成功消息(警报一切正常)。

我不希望任何人写这个形式我,只是指出我的mising如果它不是一个大请求(基本的例子会很好)

谢谢。

1 个答案:

答案 0 :(得分:1)

当控制器中发生任何错误时,将调用error方法。从您的控制器中抛出错误或者尝试这个

$(function() {
    $('.top-login-form').on('submit', function(e){
    e.preventDefault();
    var loginInfo = $(this).serialize();

      $.ajax({
        type: "POST",
        url: "user/ajax/login",
        data: loginInfo,
        dataType: "json",
        success: function(data){
           if(data){
             alert('all ok');
           }
           else{
             $('.login-info').slideDown();
             $('.login-info').html(data);
           }
        }
      });

    });
});