IE瀏覽器下ajax緩存導致數據不更新的解決方法


摘自:http://www.iefans.net/ie-ajax-json-shuju-huancun/

複製代碼
最近做設計的時候遇到一個小問題,當你用jquery的getjson函數從後臺獲取數據的時候,IE瀏覽器會自動設置緩存,如果此時你對數據進行修改的時候刷新頁面,
IE並不會在頁面顯示你修改後的數據,因爲你刷新的時候IE瀏覽器會查找緩存並顯示你修改前的數據,最後在網上查了些資料終於解決了IE瀏覽器下的問題。 方法就是在你的請求的URL 後面設置個可變的參數,比如: Java代碼 $.getJSON(
"sortShow!sortShow?time="+new Date().getTime(),function(){}); 開始我是直接這樣寫的 Java代碼 $.getJSON("sortShow!sortShow,function(){}); 所以刷新的時候IE 會顯示上次的緩存,因此你必須提交新的數據,所以在後面加了個時間參數,即使你的後臺沒設置這個參數,但也不會報錯。
此時IE會重新向後臺發出請求,類似的還有 math.random這個函數可以用。
複製代碼

 另一文:http://www.jb51.net/article/32568.htm

複製代碼
在做ajax頁面無刷新添加的時候,IE下遭遇Ajax緩存,因爲剛開始並不知道IE有這個壞毛病,折騰好久,終於解決問題。 

總結一下解決辦法: 
在IE下用Ajax請求某一頁面,通常會因爲緩存的原因而返回上一次的結果,造成混亂,
即get方式時,獲取數據,因發送參數和地址都一致,故IE瀏覽器會從緩存中取,而不會去請求服務器端,
而post方式因爲參數的不同,不會產生這個問題]而FF下不會出現這種情況。爲了不受緩存影響,可以這樣做: IE訪問策略: Internet選項
--瀏覽歷史記錄--設置-- Internet 臨時文件的選項改爲每次訪問網頁時也可以

在AJAX請求的頁面後加個隨機函數,我們可以使用隨機時間函數
在javascript發送的URL後加上 t=Math.random() 例如這樣:
URL+"&"+"t="+Math.random();//或者new Date(); 在 URL 參數後加上 "?timestamp=" + new Date().getTime(); 最好的方法: $.ajaxSetup({cache:false}) 這樣頁面中所有的ajax請求時,都執行這個。就不必改已經完成的N個接口
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章