2011-12-23 91 views
3

我有一個通過Jquery AJAX調用從XML文件抓取內容的頁面。Internet Explorer在刷新時不會更新AJAX處理的內容?

問題是它將更新每個瀏覽器(除IE以外)刷新時XML文件的內容。

我試圖與meta標籤

<meta http-equiv="expires" content="-1"/> 
<meta http-equiv="cache-control" content="no-cache,must-revalidate" /> 
<meta http-equiv="pragma" content="no-cache"/> 

這是相關的JavaScript的一小部分

$(document).ready(function(){ 
$.ajax({type: "GET",url: "file1.xml",dataType: "xml", success: parseXml }); 
} 

function parseXml(xml){ 
document.getElementById(eventMonthName).innerHTML=firstxmlvari.getElementsByTagName('month')[0].childNodes[0].nodeValue; 
} 

任何建議將非常讚賞解決這個!

+0

我不知道是什麼後端ŧ您使用的技術,但您應該嘗試設置HTTP標頭。根據我的經驗,較舊的IE瀏覽器對元標籤的反應並不好。這裏是如何操作php中的http頭。 http://www.jonasjohn.de/snippets/php/headers.htm – 2011-12-23 19:54:52

回答

3

是的,也許你遇到IE瀏覽器的緩存侵略性... 嘗試設置HTTP頭的事,但對於我的作品,正在添加當前時間的查詢字符串這樣的:

$(document).ready(function() { 
    $.ajax({ 
     type: "GET", 
     url: "/echo/xml/", 
     data: { 
      _rnd: new Date().getTime() 
     }, 
     dataType: "xml", 
     success: parseXml 
    }); 
}); 

function parseXml(xml) { 
    alert(xml); 
} 

的例如JSFIDDLE:http://jsfiddle.net/WVBDc/,檢查傳出的HTTP請求。

+0

哇!謝謝,這就是我一直在尋找的! – 2011-12-23 20:34:07

0

謝謝,我有一個類似的問題(只有在IE瀏覽器當然),並沒有刷新請求後下拉。添加時間戳結合使用了這個技巧;

$(document).trigger("ready");

在成功的功能

,歡呼聲!

4

您也可以使用「cache:false」選項,它的工作方式與Akos Lukacs提到的方式相同。結果是相同的,但您不必創建自己的日期。

$(document).ready(function() { 
    $.ajax({ 
     type: "GET", 
     url: "/echo/xml/", 
     cache: false, 
     dataType: "xml", 
     success: parseXml 
    }); 
}); 
3

在jQuery的.load方法不提供關閉緩存的一種便捷方式,我添加了一個時間戳參數,以我的要求,這是剛剛忽略在控制器級別:

$('#userDialog').load('/Users/Edit/' + someValue + '?timestamp=' + new Date().getTime(), function() { 
... 
}); 

或:

$('#userDialog').load('/Users/Create', { timestamp: new Date().getTime() }, function() { 
... 
}); 

這確實是只需要IE瀏覽器仍然是作爲第10版

相關問題