我正在进行聊天,我正在试图弄清楚我是如何检测用户是否离开了网页。几乎所有东西都由数据库处理,以避免前端搞乱。
所以我想要做的是一旦页面因任何原因被关闭(窗口关闭,转到另一个页面,点击链接等),ajax调用将在一个人离开之前被触发,所以我可以更新数据库。
这是我尝试过的:
$(window).unload(function(){
$.post("script.php",{key_leave:"289583002"});
});
由于某些奇怪的原因,它不起作用,我检查了PHP代码,它工作正常。有什么建议吗?
答案 0 :(得分:33)
试试这个:
$(window).unload(function(){
$.ajax({
type: 'POST',
url: 'script.php',
async:false,
data: {key_leave:"289583002"}
});
});
请注意async:false
,浏览器会等待请求完成。
使用$.post
是异步的,因此在浏览器停止执行脚本之前,请求可能不够快。
答案 1 :(得分:3)
这不是执行此操作的正确方法...假设操作系统只是挂起或浏览器进程中发生了某些事情,那么此事件将不会被触发。而且,您永远不会知道用户何时离开,在他/她断开连接之后显示他/她的在线状态。而不是这个,你可以做的是。
答案 2 :(得分:1)
尝试在$ .post之后添加弹出窗口(提示(“离开这么早?”))。它可能会奏效。这可能是糟糕的用户体验。 :)
答案 3 :(得分:-1)
这与上面的答案有关。 https://stackoverflow.com/a/10272651/1306144
这将每1秒执行一次ajax调用。 (1000)
function callEveryOneSec() {
$jx.ajax({}); // your ajax call
}
setInterval(callEveryOneSec, 1000);