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');
}
}
答案 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");
}
}