2011-07-23 95 views
6

看來,在IE9中,使用jquery .load將從瀏覽器緩存中提取數據,因此AJAX加載內容的「實時」效果不起作用。有什麼樣的開關強制jquery .load獲取數據新鮮?從緩存中阻止JQUERY .load

Thansk!

回答

10

如果您使用的是$.ajax低級別方法,則可以在jQuery中使用禁用緩存選項。這在load的簡化簽名中沒有表示。您可以通過確保URL始終是唯一的來代替它。你可以把當前的時間以毫秒爲單位的URL年底實現這一目標,因爲這將幾乎永遠是獨一無二的:

url += '?_=' + (new Date()).getTime(); 

(這假定url是包含請求的URL字符串,並且它不」噸有任何查詢參數目前)

2

在你嘗試加載,使其先發頭,這樣的要求將不使用緩存的頁面內容...

例如,在代碼的頂部,添加以下行

<?php 
header("Cache-Control: no-cache"); 
header("Pragma: no-cache"); 

//Other page contents that have to be loaded 

?> 
7

或者你可以使用$.ajax並設置cache選項false這將導致jQuery來時間戳追加到引擎蓋下請求URL:

$.ajax({ 
    url: "foo.html", 
    type: "GET", 
    cache: false, 
    success: function(html) { 
     $("#foo").html(html); 
    } 
}); 
0

或者你可以使用

elem.load(url, "f" + (new Date()).valueOf()); 

讓每一個請求獲得追加到查詢字符串的新的獨特價值