我有一个登录页面,当有人试图登录时,它向服务器发送一个ajax请求.ajax,进入服务器,导致他们登录我已经能够确认。但问题是我的jQuery似乎没有收到JSON。
我的控制器中的功能是:
public function login(){
$this->load->model('users_model');
if((!!$this->input->post('email')) || (!!$this->input->post('password'))){
$ret = $this->users_model->login($this->input->post('email'), $this->input->post('password'));
echo json_encode(array('status' => "OK", 'msg' => 'Logged in!')); //also tried return
}else{
echo json_encode(array('status' => 'FAIL', "msg" => 'Invalid Email or Pass'));
}
}
和AJAX函数是:
<script type="text/javascript">
$(document).ready(function() {
$("#login").ajaxForm(function(json) {
alert(json);
if(json.status == true) {
alert(json.msg);
//window.location = '<?php echo base_url(); ?>';
} else {
alert("Problem");
$(".error_msg").html(json.msg);
};
});
});
</script>
如果我警告json变量,它是空白的,如果我做json.msg它说undefined。那么......为了得到回调,json对象或任何类型的对象,我该怎么做呢?请解释一下,以便我理解问题,而不仅仅是如何解决它。非常感谢!
编辑: 这也是形式:
<span class="error_msg"></span></br>
<form id="login" action="<?php echo base_url(); ?>users/login" method="POST" enctype="multipart/form-data">
Email: <input name="email" type="text"/></br>
Password: <input type="password" name="password"></br>
<input type="submit"/>
</form>
答案 0 :(得分:1)
啊,我想我明白了。
这是你正在使用的插件吗? http://www.malsup.com/jquery/form/#api
在这种情况下,请使用ajaxSubmit
,而不是ajaxForm
。
在线的其他例子做这样的事情:
$(document).ready(function() {
$('#login').submit(function() {
$("#login").ajaxSubmit({
success: function(json) {
alert(json);
if(json.status == true) {
alert(json.msg);
//window.location = '<?php echo base_url(); ?>';
} else {
alert("Problem");
$(".error_msg").html(json.msg);
}
}
});
return false;
});
});