codeigniter redirect()不起作用

时间:2014-04-15 19:25:58

标签: codeigniter redirect

来自/ 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) {
         }
    );
});

2 个答案:

答案 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重定向,您必须在客户端执行此操作。