IE瀏覽器中ajax使用緩存數據的問題

今天做了一個小功能:點擊鼠標實時更新系統時間,採用ajax,過程很順利,沒遇到啥差錯,谷歌,火狐,歐鵬一律通過,懷着忐忑的心情點開了IE8,果然,IE要對得起前端殺手的稱號:更新不了時間。

查了一下這才發現IE一直存在這個問題,內部原因是:當第一次請求數據時能順利返回,第二次以後IE會默認使用上次的緩存數據,這就造成了每次發送請求後返回的數據沒有更新的原因。

解決方法:

1.最直接有效的就是在請求頁後面加上隨機函數,隨機函數可以是Math.random(),也可以是new Date().getTime();這樣URL每次都是新的。

之前代碼:XHR.open('get', 'demo.php', false);

改進代碼:XHR.open('get', 'demo.php?rand='+new Date().getTime(), false); //用new Date().getTime();

    或:xhr.open('get', 'demo.php?rand='+Math.random(), false);                 //用Math.random();

2.在發送請求send();前加一行代碼:(XHR對象).setRequestHeader("If-Modified-Since","0");

3.據說改用post提交方式也能解決這個問題,但我試了一下發現不行,不知爲何。還有在header上設置禁止緩存等方法。時間倉促,這些方法日後詳細查詢。

發佈了47 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章