0

我有一个 jQuery AJAX 调用,它每 5 分钟进行一次,当用户离开页面时(使用不同的参数)。

/* Remove locks when leaving page - AJAX 'aborted' by IE8 and below */
    window.onunload = function () {
        manageLocks(2)
    }

    /* Refresh locks every 5 minutes - AJAX works fine in all browsers */
    window.setInterval(function () {manageLocks(1);}, 30000);

    function manageLocks(mode) {
        $.ajax({
            type: "POST",
            url: "/System/ManageLocks",
            data: '{ "action" : ' + mode + '}',
            contentType: "application/json",
            dataType: "json",
            cache: false
        });
    }

我认为这不是 AJAX 调用的问题,而是如何调用该函数。在使用 using 调用时,它在所有浏览器中都可以正常工作,window.setInterval但在使用 using 调用时,在 IE8 及以下的网络面板中显示为“已中止” window.onunload

是否有人知道旧的 IE 版本在以这种方式调用时会阻止某些功能,或者对 的支持不稳定onunload?有没有另一种方法可以让它在旧的 IE 版本中工作?

只要我可以managelocks每 5 分钟调用一次函数,并且当用户离开页面时(我知道事实上,关闭浏览器时不会调用该函数 - 我可以忍受)我'我不太挑剔它是如何发生的。

谢谢。

4

1 回答 1

2

尝试将 ajax 调用的异步参数设置为 false,以便它执行调用然后卸载页面。此刻它正试图在页面被卸载的同时执行 ajax 调用,并且似乎页面在调用完成之前被卸载,因此它取消了 ajax 调用,因此通过将 async 设置为 false 将允许 ajax 调用完成在页面被卸载之前

于 2013-04-04T08:23:03.977 回答