我正在使用onbeforeunload事件发送ajax请求来执行一些清理任务。
当我使用onbeforeunload时,它会在关闭选项卡时显示确认对话框。 我想要的不是显示任何确认对话框,只是发送清理请求。以下是我正在使用的脚本。
window.onbeforeunload = unloadFunction;
function unloadFunction() {
var test_id = $('#test_id').val();
jQuery.ajax({
url: "/test/cleanup/" + test_id,
cache: false
}).done(function () {
return false;
});
return false;
}
有什么方法可以取消确认对话框吗?
根据一些建议,我尝试将return语句更改为return ;
而不是return false;
。但这也行不通。
答案 0 :(得分:2)
根据我对原帖的评论,答案是通过在Ajax调用设置中添加async: false
来使调用同步,将最后一个返回false更改为return null;
,并删除done函数:
window.onbeforeunload = unloadFunction;
function unloadFunction() {
var test_id = $('#test_id').val();
jQuery.ajax({
url: "/test/cleanup/" + test_id,
cache: false,
async: false
});
return null;
}
答案 1 :(得分:1)
当用户关闭页面时,文档已经死亡,脚本已经死了。您希望脚本在关闭后运行。现在,如果标签没有关闭,感觉就像是冻结等待你的功能完成。这意味着它是不可能的。我相信这就是你想要的?清理请求将不会发送,因为文档已关闭。