2012-06-07 78 views
1

我有這個,我在一個等待頁面使用JavaScript函數來檢查,如果在我的Web App的出口進程正在運行或已完成:Internet Explorer的Ajax調用,緩存的響應問題

function waitForExport(token) { 
    $.ajax({ 
     type : "GET", 
     url : 'export/status', 
     data : { 
      token : token 
     }, 
     success : function(data) { 
      if (data.status == 'running') { 
       $('#waitContent').append('<span>RUNNING</span>'); 
       setTimeout("waitForExport('" + token + "')", 5000); 
      } 
      if (data.status == 'done') { 
       $('#waitContent').append('<div>DONE</div>'); 
       location.href = "export/results"; 
      } 
     }, 
     error : function(jqXHR, textStatus, errorThrown) { 
      alert(jqXHR.responseText); 
     } 
    }); 
} 

它的工作原理在Chrome和Firefox中,但不在IE中。

使用Internet Explorer 7/8,該進程顯示始終運行,因爲除第一次以外,它不會發出任何其他服務器請求(我使用Eclipse調試器進行了驗證)。它似乎緩存了第一個服務器響應,然後再也沒有命中服務器了......

任何想法?

回答

6

您可以使用:

cache: false 

$.ajax()選項對象。

這樣做是在URL的末尾附加一個_=[TIMESTAMP](不含[ ])。這使得瀏覽器認爲它總是一個完全不同的請求,因爲在請求中使用了不同的查詢字符串。

+0

完美!非常感謝你! – davioooh

+0

沒問題!當我在Internet Explorer上測試AJAX時,我也注意到了這一點。這是一個痛苦,弄清楚,但現在我知道總是設置緩存:假,除非我知道我不關心緩存能力 – Ian

+0

你救了我! :D – davioooh