我有一个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调用的问题,而是调用该函数的方式。使用window.setInterval
调用时,它在所有浏览器中都可以正常工作,但在使用window.onunload
调用时,在IE8及以下的网络面板中显示为“已中止”。
是否有人知道旧的IE版本在以这种方式调用时会阻止某些功能,或者对onunload
的支持不稳定?还有另一种方法可以让它在旧的IE版本中运行吗?
只要我可以每隔5分钟调用managelocks
函数以及当用户离开页面时(我知道实际上,当浏览器关闭时不会调用该函数 - 我可以忍受这种情况)我不是太挑剔如何发生。
感谢。
答案 0 :(得分:2)
尝试将ajax调用的异步参数设置为false,以便执行调用然后卸载页面。在尝试在卸载页面的同时执行ajax调用的那一刻,似乎在调用完成之前卸载了页面,因此通过将async设置为false来取消ajax调用将允许ajax调用完成在页面卸载之前