【发布时间】:2014-12-17 03:44:42
【问题描述】:
我正在使用 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; 。但这也行不通。
【问题讨论】:
-
return null;是否符合您的要求? -
返回空值;没有显示对话框,也没有向服务器发送 ajax 调用。
-
这可能是因为您在 Ajax 调用之后调用了 return。请记住,您的 Ajax 调用默认是异步的,因此 return 将在 Ajax 调用完成之前被调用。在您的 Ajax 调用设置中传递 async: false ,您可以删除 done 函数。然后,在同步 Ajax 调用完成之前,您不应点击 return null。
-
使 async:false 工作。谢谢
-
酷,请随时将我的答案标记为下面的正确答案,以供未来的观众观看。
标签: javascript jquery onbeforeunload