У меня возникла проблема с отправкой формы с использованием метода 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.
Что происходит, когда вы делаете print_r ($ _ POST) в контроллере? – Rooneyl
В контроллере он не получает никакого значения из формы. – chantheoun
Просто догадайтесь, но вы не указали '' 'перед' .post', например. '$ .post()' Также. Нет причин для сериализации формы, если вы используете jquery '$ .ajax();' и отправляете itll автоматически отправлять значения. – gorelative