2012-05-09 58 views
1

我正面臨使用jQuery .serialize()方法發佈表單時遇到問題。當表單傳遞給jQuery函數時,它可以通過HTTP POST獲取所有值,但是當使用.serialize()方法將表單發送到控制器時,控制器無法獲取值。這裏是我的代碼:無法在控制器中使用jQuery的.serialize()在codeigniter中通過HTTP POST值獲取表單值

在View:

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

} 

我在傳遞價值的第一步錯誤從View到jQuery是Method Post,但是當從jquery傳遞值到控制器時,它使用Method Get。

+1

會發生什麼事,當你做的print_r($ _ POST)在你的控制? – Rooneyl

+0

在控制器中它沒有從窗體中獲取任何值。 – chantheoun

+1

只是一個猜測,但你在'.post'之前缺少'$',例如。 '$ .post()'另外。如果您使用jquery的'$ .ajax();'並且發佈它自動發送值,沒有理由序列化表單。 – gorelative

回答

1

嘗試,而不是seralizeArray:

$.post(base_url + "elements/ajax_login", $("#loginForm").serializeArray(), 
function(data){ 
    // all your stuff 
},'json'); 
相關問題