ajax對IE內核時不能實時顯示,其他內核都行

是因爲IE緩存


解決方法:

---轉的

今天下午在做要素頁面無刷新添加的時候,IE下遭遇Ajax緩存戲弄,因爲剛開始並不知道IE有這個壞毛病,折騰了我一下午,終於解決問題。鬱悶之餘,總結一下解決辦法: 

在IE下用Ajax請求某一頁面,通常會因爲緩存的原因而返回上一次的結果,造成混亂,而FF下不會出現這種情況。爲了不受緩存影響,可以這樣做: 


IE訪問策略:Internet選項--瀏覽歷史記錄--設置-- Internet 臨時文件的選項改爲每次訪問網頁時也可以 


1: 在AJAX請求的頁面後加個隨機函數,我們可以使用隨機時間函數 


在javascript發送的URL後加上t=Math.random() 
例如這樣:URL+"&"+"t="+Math.random();或者new Date(); 


2: 在XMLHttpRequest發送請求之前加上XMLHttpRequest.setRequestHeader("If-Modified-Since","0") 


一般情況下,這裏的XMLHttpRequest不會直接使用 
你應該可以找到這樣的代碼 
XXXXX.send(YYYYYY); 
那麼,就把它變成 
XXXXX.setRequestHeader("If-Modified-Since","0"); 
XXXXX.send(YYYYYY); 
實踐證明,兩種方法都非常有效。 
1、在服務端加 header("Cache-Control: no-cache, must-revalidate"); 
2、在ajax發送請求前加上 xmlHttpRequest.setRequestHeader("If-Modified-Since","0"); 
3、在ajax發送請求前加上 xmlHttpRequest.setRequestHeader("Cache-Control","no-cache"); 
4、在 Ajax 的 URL 參數後加上 "?fresh=" + Math.random(); //當然這裏參數 fresh 可以任意取了 
5、第四種方法和第三種類似,在 URL 參數後加上 "?timestamp=" + new Date().getTime(); //推薦使用這種方式 
6、用POST替代GET:不推薦 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章