0

我只是想让我的第一个 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>

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

我不想让任何人给我写这个表格,只要指出我缺少什么,如果它不是一个大的要求(基本的例子会很好)

谢谢你。

4

1 回答 1

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

    });
});  
于 2012-06-17T07:02:03.340 回答