在浏览器关闭时,JavaScript并不总是调用自定义服务器端方法(Asp.Net/C#)
在browser close事件中,我试图从JavaScript调用一个服务器端方法,以对数据库表进行一些更改。我在JavaScript中的“onbeforeunload”事件中这样做 大多数情况下,它会成功地调用服务器端代码并实现预期的数据库表更改*但有时不会调用服务器端事件。*在浏览器关闭时,JavaScript并不总是调用自定义服务器端方法(Asp.Net/C#),javascript,onbeforeunload,Javascript,Onbeforeunload,在browser close事件中,我试图从JavaScript调用一个服务器端方法,以对数据库表进行一些更改。我在JavaScript中的“onbeforeunload”事件中这样做 大多数情况下,它会成功地调用服务器端代码并实现预期的数据库表更改*但有时不会调用服务器端事件。* 是否有人有过类似需求的经验,或者能够就如何确保始终调用服务器端事件提供任何建议 啊哈,不久前我们遇到过这样的问题,我们绝对需要向服务器发出窗口已关闭的通知。我们注意到只有Firefox会遵守onbeforeunloa
是否有人有过类似需求的经验,或者能够就如何确保始终调用服务器端事件提供任何建议 啊哈,不久前我们遇到过这样的问题,我们绝对需要向服务器发出窗口已关闭的通知。我们注意到只有Firefox会遵守
onbeforeunload
中的请求。最后,解决方案如下:
$(window).unload(function () {
$.ajax ({
url: "...",
data: "(what you want to send)",
async: false // THIS
});
});
更奇怪的是
window.onunload
和window.onbeforeunload
都不适用于我们;至少在那时是这样。这是因为在beforeunload上调用异步函数充其量是不可靠的,因为浏览器通常会在调用发送之前关闭窗口。除了@adeneo所说的,您还可以显示进度条或其他内容,并在onbeforeunload上进行同步ajax调用,以进行服务器端更改