jQuery和Ci没有正确处理注销功能
jQuery and Ci not properly processing a logout feature
下面的代码有什么问题吗?当Ci会话到期时,我似乎无法获得处理警报("成功")。以下是我的jquery和Ci代码:
setInterval(function() {
jQuery.getJSON("<?=base_url()?>index.php/regUserDash/sessionExpire", function(data) {
var sessionState = jQuery.parseJSON('{"sessionExpired":"true","sessionExpired":"false"}');
if(sessionState.sessionExpired === "true") { // if session is expired run the following code
var dataString = 'true';
jQuery.ajax({ // send the expired signal to Ci so that it knows the session has expired
type: 'POST',
dataType: 'JSON',
url: '<?=base_url()?>index.php/regUserDash/extendSession',
data: {'dataString': true},
success: function(data) {
if (data.extendedSession == true) {
alert('success');
} else {
return false;
}
}
});
} else if(sessionState.sessionExpired == "false") {
return;
}
});
}, 120000); // loop through every 2 minutes
CodeIgniter代码:
public function sessionExpire() {
if ($this->session->userdata("logged") == "1") {
echo json_encode(array("sessionExpired" => false));
} elseif($this->session->userdata("logged") == "0") {
echo json_encode(array("sessionExpire" => true));
}
} public function extendSession() {
// set loggedIn session var
$this->session->set_userdata('logged', '1');
// return json to ajax call
echo json_encode(array("extendedSession" => true));
}
jQuery.parseJSON('{"sessionExpired":"true","sessionExpired":"false"}');
返回第一个sessionExpired = true
和第二个sessionExpired = false
,它们覆盖第一个。
因此,这里有一种方法可以做到这一点(需要测试):
setInterval(function() {
jQuery.getJSON("<?=base_url()?>index.php/regUserDash/sessionExpire", function(data) {
if(data.sessionExpired == "true") { // if session is expired run the following code
// var dataString = 'true'; // Remove this
jQuery.ajax({ // send the expired signal to Ci so that it knows the session has expired
type: 'POST',
dataType: 'JSON',
url: '<?=base_url()?>index.php/regUserDash/extendSession',
data: {'dataString': true},
success: function(data) {
//if (data.extendedSession == true) {
alert('success');
//} else {
// return false;
//}
// Remove commented code, because extendSession() always return true
}
});
} else {
return 'Session not expired!';
}
});
}, 120000); // loop through every 2 minutes
和CI功能:
public function sessionExpire()
{
if ($this->session->userdata("logged") == "1") {
echo json_encode(array("sessionExpired" => false));
} elseif ($this->session->userdata("logged") == "0") {
echo json_encode(array("sessionExpired" => true));
}
}
public function extendSession()
{
// set loggedIn session var
$this->session->set_userdata('logged', '1');
// return json to ajax call
echo json_encode(array("extendedSession" => true));
}
相关文章:
- 如何正确处理依赖ViewChild和Angular 2中可观察到的数据的组件上的更改检测
- JQuery $.getJSON() 不能正确处理回调
- 如何正确处理承诺
- 如何使用promise正确处理express.js中的错误(字符串或对象)
- jQuery和Ci没有正确处理注销功能
- Electron和Typescript:如何在运行时正确处理模块
- SAPUI5:正确处理点击事件
- 如何正确处理空的、遗漏的、默认的表单值
- 哪个 JS 日期时间选取器正确处理 DST 转换
- jQuery表单插件:如何正确处理从服务器发回的重定向请求
- 字符串分词器无法正确处理一行中的空标记或多个分隔符
- 如何正确处理JSON和HighCharts中的日期对象
- 如何处理注销 #appcelerator
- 在javascript中需要帮助包装函数并正确处理“this”
- 如何正确处理某些 html 标记
- 如何正确处理多个下拉按钮
- 正确处理调用 AngularJS $http中的错误
- 如何在没有引导的情况下正确处理 AngularJS 应用程序中的弹出窗口(模态)
- 如何正确处理回调堆栈
- 主干/Dropzone:如何正确处理Dropzone实例