Javascript 关闭窗口时PHP更新数据库
当用户关闭或刷新浏览器时,我正在尝试更新数据库。这是我的代码:Javascript 关闭窗口时PHP更新数据库,javascript,jquery,ajax,onbeforeunload,Javascript,Jquery,Ajax,Onbeforeunload,当用户关闭或刷新浏览器时,我正在尝试更新数据库。这是我的代码: $(window).bind('unload', function(){ $.ajax({ type: 'get', async: false, url: 'liberaLugar.php?idCurso=2' }); }); 任何帮助都将不胜感激。 提前谢谢 这在大多数情况下都适用。当然,如果您的服务器无法访问,您可以冻结浏览器,因此我们还应该添加一个超时。给你的用
$(window).bind('unload', function(){
$.ajax({
type: 'get',
async: false,
url: 'liberaLugar.php?idCurso=2'
});
});
任何帮助都将不胜感激。
提前谢谢 这在大多数情况下都适用。当然,如果您的服务器无法访问,您可以冻结浏览器,因此我们还应该添加一个超时。给你的用户一些关于到底发生了什么的视觉指示可能也会有帮助,所以我们应该将光标设置为等待
var unloaded = false;
$(window).on('beforeunload', unload);
$(window).on('unload', unload);
function unload(){
if(!unloaded){
$('body').css('cursor','wait');
$.ajax({
type: 'get',
async: false,
url: 'liberaLugar.php?idCurso=2',
success:function(){
unloaded = true;
$('body').css('cursor','default');
},
timeout: 5000
});
}
}
编辑:现在Webkit浏览器中不推荐使用同步AJAX。这非常有效!非常感谢你。还有一件事,如果我提交表格,我怎么能忽略这些事件?也许是一个全局变量?@AndresCavazos是的,在表单提交代码中设置一个全局变量,就像我在本例中所做的那样。然后在unload函数中,检查变量是否为true,如果为true,则返回false。@r3wt,如果同步AJAX现在在Webkit浏览器中不受欢迎,那么如何在这些浏览器中实现呢?@IgorSavinkin我不知道您是否仍然可以,但如果您添加
if(确认('some message'){…}
block它可能允许您执行普通的异步请求。如果这是您真正需要的,我建议您只需进行实验。另一种策略可能是在您的服务器上安装一个ping端点,当它在5分钟内没有收到用户的消息时,它会执行与ajax请求相同的工作。希望这没用。