0

嗨,我一直在寻找能够在用户关闭浏览器时发送 ajax 请求的解决方案。到目前为止,我发现的只是 onBeforeUnload 事件。这是我目前所拥有的:

$(window).bind('beforeunload', function () {
   $.ajax({
    type: 'GET',
    async: false,
    url: '/Home/Get/'
  });
});

我也尝试过使用本机javascript:

window.onbeforeunload = function (e) {
    $.ajax({
        type: 'GET',
        async: false,
        url: '/Home/Get/'
    });
};

现在我的兴趣不是接收回调我只想在浏览器关闭时能够在服务器端执行一个方法。

这似乎在 chrome 、 firefox 和 IE10 上运行可靠,但在 IE9 和 IE8 上根本不起作用。

有谁知道这个问题的解决方案?

4

1 回答 1

2

您可以尝试使用同步请求来执行此操作。
浏览器可能不会等待异步请求完成(甚至建立)。这里有另一个类似的问题请参考。

但是你应该关心的一件事是:当使用同步 ajax 调用时,用户的浏览器将被阻塞,直到 ajax 调用完成。这对用户体验不利。更糟糕的是,如果您的服务器中发生了一些错误并且无法完成 ajax 请求,浏览器将没有响应。所以要小心这样做!

顺便说一句,为了一个好的设计,服务器不应该依赖客户端发送的 ajax 请求来做一些清理工作。如果你必须做这样的工作,使用一些其他的技术,比如实现一个heartbeat机制。

于 2013-10-12T10:35:25.693 回答