關於ajax的IE cache 問題分析及解決

2022-02-23 10:25:42 字數 1481 閱讀 6415

最近做了乙個ajax相關的功能,大概目標根據使用者的不同登陸狀態來生成不同的歡迎語,如下:

使用者登陸了,就顯示:您好呀,又來啦!

使用者不登陸,則顯示:您還沒登陸!

很簡單的應用,結果我寫完ajax後,發現乙個致命的問題:

firefox中一切正常,但在ie第一次開啟沒問題,再重新整理一次,中文就會成為亂碼!

我仔細檢查了一下,沒結果,後來經過 laruence 大哥的幫助,才發現是ie快取的問題。

ok,這個問題是這個樣子的:

原理:firefox 每次 request 都會重新再回一次 server 取得最新的資料,但是 ie 就不一樣了,它會 cache

住之前得到的資料,只有第一次 request 時會真正的去 server 讀取資料,導致ajax資料不會隨時間而更新….

我開啟ie的快取資料夾,果然發現了乙個以ajax請求位址命名的檔案,開啟一看,就明白為什麼會亂碼了,因為檔案的儲存是用ansi的。可能ie不會用gbk的編碼格式去讀取這個檔案,而會使用unicode

解決方案(從網上收集的):

1在服務端加

header("cache-control: no-cache, must-revalidate"); 或者用下面的組合更好一些:

header("

expires: sat, 1 jan 2005 00:00:00 gmt");

header("

last-modified: ".

gmdate( "

d, d m y h:i:s")

."gmt"

);header("

cache-control: no-cache, must-revalidate");

header("

pragma: no-cache

"); 

2

ajax

傳送請求前加上

3

ajax

傳送請求前加上

4

ajax

的url

引數後加上

"?fresh=" + math.random(); //

當然這裡引數

fresh

可以任意取了

5第四種方法和第三種類似,在

url

引數後加上

"?timestamp=" + new date().gettime(); //推薦使用這種方式,我用的就是這種,個人認為比較方便。

6

post

替代get

ajax的 IE cache 相關問題解決

運用ajax做了乙個名字檢驗,第一次是有效的,但是提交過後,再檢驗一次,結果就不對了,是由於ie的cache的原因。複製 如下 function verify else if data 2 else 原理 firefox 每次 request 都會重新再回一次 server 取得最新的資料,但是 i...

ajax 中關於URL路徑及引數特殊字元問題

最近在做專案時,ajax引數中出現了特殊字元 導致路徑出現截斷問題,去度娘找了下答案,找到了解決辦法,在js中有個 escape 函式 看下函式介紹 escape 函式可對字串進行編碼,這樣就可以在所有的計算機上讀取該字串。例子輸出 visit 20w3school 21 3f 21 3d 28 2...

關於ajax小記

本文借鑑這位大哥的內容 1.ajax用 選擇器 val 獲取元素的value值 2.ajax中如果是賦值 demoid val 賦值的引數 3.注意data和datatype是不同的意思,乙個是往後台傳值,乙個是伺服器返回的資料型別。如果返回的不是json,而datatype是json的話,會無法傳...