OnBeforeUnload ajax请求不能在IE8上运行IE9

时间:2013-10-12 10:06:53

标签: javascript jquery

您好我一直在寻找一个解决方案,以便能够在用户关闭浏览器时发送ajax请求。到目前为止,我发现的是onBeforeUnload事件。这是我到目前为止:< / p>

$(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。

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

1 个答案:

答案 0 :(得分:2)

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

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

BTW,对于一个好的设计,服务器不应该依赖客户端发送的ajax请求来做一些清理工作。如果您必须完成这样的工作,请使用其他一些技术,例如实施heartbeat机制。