2013-04-04 55 views
0

调用IE8及以下版本的AJAX调用时,我每5分钟创建一次jQuery AJAX调用,并且当用户离开页面时(使用不同的参数)。当使用window.onunload

/* 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分钟调用一次函数,并且当用户离开页面时(我意识到,当浏览器关闭时,函数不会被调用 - 我可以生活与此)我不是太挑剔如何发生。

谢谢。

回答

2

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

+0

先生,你是一个救命的人。 – 2013-04-04 08:29:05

+0

你的欢迎:) – 2013-04-04 08:48:39