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>

次の問題に直面しています。間違った電子メールまたはパスワードまたは正しいものを挿入すると、常に成功メッセージが表示されます (alert all ok)。

誰かにこのフォームを書いてほしくありません。大きなリクエストでない場合は、不足していることを指摘してください (基本的な例が良いでしょう)。

ありがとうございました。

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 に答える