1

jQuery.serialize()メソッドを使用してフォームを投稿する際に問題が発生しています。フォームが jQuery 関数に渡されると、HTTP POST 経由ですべての値を取得できますが、.serialize()メソッドを使用してフォームをコントローラーに送信すると、コントローラーは値を取得できません。これが私のコードです:

ビューで:

<form id="loginForm" name="loginForm" method="post">
Email: <input type="text" class="contactStyle required email" id="email" name="email"/>
Password:<input type="password" class="contactStyle required" id="password" name="password"/>
</form>
<a href='#' onclick="login(); return false;" class="loginBut" >Login</a>

Javascript コード:

login = function(){
.post(base_url + "elements/ajax_login",  $("#loginForm").serialize(),
function(data){
if(data.success == 'success'){
   top.location =  top.location;
}else if(data.success == 'admin'){
   top.location = base_url + "admin";
}else if(data.success == 'failed'){
          alert('Incorrect login');
          //ADD POPUP
          $('#warn').hide().html('Your email / password combination is not correct.').show('slow');
}else{
    alert("An error has occured please try refreshing the page.")
}
},'json');
}

コントローラ:

function ajax_login() {
    $email = $this->input->post('email');
    $result = array();

    if ($this->ion_auth->login($email, $this->input->post('password'), 0)) { //if the login is successful
        //if its an admin send them to the dashboard
        if ($this->ion_auth->is_admin()) {
            $result['success'] = 'admin';
        } else {                
            $result['success'] = 'success';
        }
    } else { //if the login was un-successful
        $result['success'] = 'failed';            
    }
    echo json_encode($result);

}

ビューからjQueryに値を渡すのはメソッドポストですが、jqueryからコントローラーに値を渡すときはメソッドGetを使用するという最初のステップでエラーが発生しました。

4

1 に答える 1

1

代わりにseralizeArrayを試してください:

$.post(base_url + "elements/ajax_login",  $("#loginForm").serializeArray(),
function(data){
    // all your stuff
},'json');
于 2012-05-28T15:43:08.097 に答える