Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在浏览器关闭时,JavaScript并不总是调用自定义服务器端方法(Asp.Net/C#)_Javascript_Onbeforeunload - Fatal编程技术网

在浏览器关闭时,JavaScript并不总是调用自定义服务器端方法(Asp.Net/C#)

在浏览器关闭时,JavaScript并不总是调用自定义服务器端方法(Asp.Net/C#),javascript,onbeforeunload,Javascript,Onbeforeunload,在browser close事件中,我试图从JavaScript调用一个服务器端方法,以对数据库表进行一些更改。我在JavaScript中的“onbeforeunload”事件中这样做 大多数情况下,它会成功地调用服务器端代码并实现预期的数据库表更改*但有时不会调用服务器端事件。* 是否有人有过类似需求的经验,或者能够就如何确保始终调用服务器端事件提供任何建议 啊哈,不久前我们遇到过这样的问题,我们绝对需要向服务器发出窗口已关闭的通知。我们注意到只有Firefox会遵守onbeforeunloa

在browser close事件中,我试图从JavaScript调用一个服务器端方法,以对数据库表进行一些更改。我在JavaScript中的“onbeforeunload”事件中这样做

大多数情况下,它会成功地调用服务器端代码并实现预期的数据库表更改*但有时不会调用服务器端事件。*


是否有人有过类似需求的经验,或者能够就如何确保始终调用服务器端事件提供任何建议

啊哈,不久前我们遇到过这样的问题,我们绝对需要向服务器发出窗口已关闭的通知。我们注意到只有Firefox会遵守
onbeforeunload
中的请求。最后,解决方案如下:

$(window).unload(function () {
    $.ajax ({
        url: "...",
        data: "(what you want to send)",
        async: false                             // THIS
    });
});

更奇怪的是
window.onunload
window.onbeforeunload
都不适用于我们;至少在那时是这样。

这是因为在beforeunload上调用异步函数充其量是不可靠的,因为浏览器通常会在调用发送之前关闭窗口。除了@adeneo所说的,您还可以显示进度条或其他内容,并在onbeforeunload上进行同步ajax调用,以进行服务器端更改