2013-04-04 59 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