2012-05-09 1 views
1

У меня возникла проблема с отправкой формы с использованием метода jQuery .serialize(). Когда форма передается функции jQuery, она может получать все значения через HTTP POST, но при использовании метода .serialize() для отправки формы контроллеру контроллер не может получить значения. Вот мой код:Невозможно получить значения формы через значение HTTP POST в контроллере, используя jQuery .serialize() в codeigniter

В Вид:

<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 является методом Post, но при передаче значения из jquery в контроллер он использует метод Get.

+1

Что происходит, когда вы делаете print_r ($ _ POST) в контроллере? – Rooneyl

+0

В контроллере он не получает никакого значения из формы. – chantheoun

+1

Просто догадайтесь, но вы не указали '' 'перед' .post', например. '$ .post()' Также. Нет причин для сериализации формы, если вы используете jquery '$ .ajax();' и отправляете itll автоматически отправлять значения. – gorelative

ответ

1

попробуйте вместо seralizeArray:

$.post(base_url + "elements/ajax_login", $("#loginForm").serializeArray(), 
function(data){ 
    // all your stuff 
},'json'); 
Смежные вопросы