来自/ admin / login,我正在将一个jquery帖子发送到/ admin / doLogin
public function doLogin()
{
$this->load->model('admin_model');
$email = $this->input->post('email');
$password = $this->input->post('password');
$data['user'] = $this->admin_model->do_login($email, $password);
if($data['user'] == true)
{
redirect(base_url().'admin/');
}
else
{
redirect(base_url().'admin/login');
}
}
现在,当$ data [' user'] == true时,我会留在管理员/登录页面上。 在我的网络中,我看到/ admin已加载,但我的页面没有刷新。
我尝试使用codigniter重定向功能,我也试过$ this-> index,我也尝试回显javascript window.location.href,但没有什么工作。我总是留在那个登录页面上。即使我总是看到他们被加载到我的开发工具网络中。 有人有个主意吗?是因为我在localhost上吗?我不知道了......
编辑:
$('#btn-login').click(function(){
var email = $('#login-username').val();
var password = $('#login-password').val();
$.post(
'/index.php/admin/doLogin/',
{ email: email, password: password },
function(data) {
}
);
});
答案 0 :(得分:4)
如上所述,您无法在Ajax模式下使用重定向。您通过Ajax调用PHP脚本,您无法使用PHP重定向。
您必须使用Javascript回调:
public function doLogin()
{
$this->load->model('admin_model');
$email = $this->input->post('email');
$password = $this->input->post('password');
$data['user'] = $this->admin_model->do_login($email, $password);
echo ($data['user'] ? 1 : 0);
}
在你的JS中:
$.post(
'/index.php/admin/doLogin/',
{ email: email, password: password },
function(data) {
var redirect = data == 1 ? 'admin' : 'admin/login';
window.location.href = '<?php echo base_url() ?>'+ redirect;
}
);
如果PHP重定向,为什么要使用Ajax?
答案 1 :(得分:1)
您不需要base_url()
。你应该只使用redirect('your_controller/controller_function')
。此外,您无法在AJAX请求中使用PHP重定向,您必须在客户端执行此操作。