Codeigniter会话在AJAX成功时被破坏

时间:2016-07-13 10:21:01

标签: javascript jquery ajax codeigniter heroku

Iam使用带有AWS数据库的heroku服务器中的codeigniter框架。在AJAX成功函数中使用window.location.reload();被调用,会话被破坏并返回到登录页面。有什么方法可以防止会话被破坏

              success: function(data) {                     
                    if(message == "1") {                                
                        window.location.reload();
                    }
                    else {
                        var alertmessage = JSON.stringify(data['message']);
                        $("#alertmsg").text(alertmessage);
                        $("html, body").animate({ scrollTop: 0 }, "slow");
                    }
                }

控制器代码

public function __construct()
{

        parent::__construct();
        $this->load->helper('url');
        $this->load->helper('form');
        $this->load->library('form_validation');
        $this->load->library('form_validation', 'session');
        $this->load->model('client_model');

}
public function index()
{
    $myuser_id = $this->session->userdata('client_id');
    if($myuser_id!="") {        
        $client_id = $myuser_id;
        $data['client_profile'] = $this->client_model->client($client_id); 
        $this->load->view('client_profile_update',$data);
    }
    else {
        redirect('login');
    }
}

1 个答案:

答案 0 :(得分:0)

使用ajax请求在控制器中重定向是一件坏事。 试试这个,

控制器

public function index()
{
    $myuser_id = $this->session->userdata('client_id');
    $response = array();
    if($myuser_id!="") {        
        $response['status'] = true;
    }
    else {
        $response['status'] = false;
    }

    echo json_encode($response);

}

JS

success: function(data) {   
    var res = JSON.parse(data);                  
    if(res.status) {                                
        window.location.reload();
    }
    else {
        var alertmessage = JSON.stringify(data['message']);
        $("#alertmsg").text(alertmessage);
        $("html, body").animate({ scrollTop: 0 }, "slow");
    }
}