php - 关闭选项卡后更新数据库中的注销时间
问题描述
我的问题是当用户关闭选项卡时,我必须调用 ajax 来更新数据库中的注销时间。因此,经过一些研究,我尝试了以下代码,但仍然无法正常工作。
我注意到了。在 JS 中添加以下脚本后 20 秒后自动注销。
我使用了下面的代码,但这不是 SO 用户团队建议的正确代码。
window.onbeforeunload = function(){
// var msg="Are you sure want to close this tab";
// return msg;
$.ajax({
method:"POST",
async: false,
url:baseUrl+"/Employee_control/logoutTimeUpdate"
});
所以我将其更改为此但仍然无法正常工作。
var _wasPageCleanedUp = false;
function logoutTimeUpdate()
{
if (!_wasPageCleanedUp)
{
$.ajax({
type: 'GET',
async: false,
url:baseUrl+"/Employee_control/logoutTimeUpdate",
success: function ()
{
_wasPageCleanedUp = true;
alert("hello");
}
});
}
}
$(window).on("unload", function ()
{
logoutTimeUpdate();
});
控制器
public function logoutTimeUpdate(){
$updatedLogoutTime=$this->Employee_model->logoutTimeUpdate();
if ($updatedLogoutTime == 1) {
$this->session->unset_userdata('login_session');
$this->session->sess_destroy();
}
}
}
模型
public function logoutTimeUpdate(){
$data = array('logout_time' =>$this->current_date);
$where = array('login_id'=>$this->session->userdata['login_session']['id']);
$this->db->where($where);
$this->db->update('tbl_current_login', $data);
return 1;
}
解决方案
您可以在卸载事件上编写代码。例如
<!DOCTYPE html>
<html>
<head>
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<div id="ProcessModel">
</div>
<script type="text/javascript">
$(window).on('unload',function () {
$.ajax({
type: 'GET',
async: false,
url: 'check.php?id=123'
});
});
</script>
</body>
</html>
这将在关闭选项卡时调用。
推荐阅读
- java - Groovy 和 Spock 之间的冲突
- flutter - 扑扑 Firestore 交易这行得通吗?
- rabbitmq - 转到 /usr/local/sbin 后,我似乎无法为 RabbitMQ 启用插件
- reactjs - 为什么 React-Bootstrap 在元素中重复自定义类名?
- c# - 无法将异步 lambda 表达式转换为委托类型“Func”
- meshlab - Meshlab:如何提取点的 x、y、z 坐标?
- database - 将一个 db 文件的列替换为另一个 db 文件的列
- html - 禁用的属性未显示在 Html.Checkbox
- c++ - 禁止转换为父级,但公开父级接口(设计问题)
- python - Python 计时器线程作为类变量从不同的类实例调用 timer.start() 和 timer.cancel()