IE8,9下的ajax快取問題

2021-09-06 22:12:42 字數 1273 閱讀 2736

原文:

ie8,9下的ajax快取問題

最近在做乙個**的登入註冊框,前端使用了jquery。由於sign和login不是在單獨的頁面上,而是以乙個彈出框出現。所以決定使用ajax來實現註冊和登入功能。本以為可以一帆風順,結果在測試的時候發現了奇怪的問題。

在用chrome , ff , ie10+測試的時候基本沒問題,但在ie8,9上執行時卻出現了輸入正確的使用者名稱和密碼不能登入的情況。一開始還以為是session丟失了,開始吐槽後台的框架。

但是在耐心的除錯後,發現session並沒有丟失。這下可急死我了,難道混了這麼久連乙個註冊登入都搞不定?這讓我不禁妄自菲薄,感嘆人生百態,世事無常。就這樣過了1/3炷香之後,我決定要振作起來。

在仔細觀察我那沒長幾個注釋的**後,我發現$.ajax中的url有點奇怪。雖然位址是正確的,但程式猿和攻城獅的直覺告訴我,ie8 9兩兄弟有可能自作多情地快取了我的ajax。想到這裡,雙手突然有些顫抖,慌忙在url後加了個時間戳。

//就像這樣

url:myurl+"?t="+(new date).valueof()

然後清個快取再試試,成功!可以正常登入了。

這樣,為了對付低版本ie過分的熱情,在使用$.ajax時可以將其cache屬性設定為false(未測試過),

cache

要求為boolean型別的引數,預設為true(當datatype為script時,預設為false),設定為false將不會從瀏覽器快取中載入請求資訊。

或者在全域性中設定(未測試過)

//$.ajaxsetup() 方法設定全域性 ajax 預設選項。

$.ajaxsetup();

這樣就不用再擔心快取了。

但是,快取並非是為了給我們帶來麻煩而設定的,畢竟別的瀏覽器可以正常使用。所以,要為ie8 9單獨設定禁用快取中的資訊。

//jquery 1.9.0後取消了$.browser

if($.browser.msie&&($.browser.version=="8.0"||$.browser.version=="9.0"))

在1.9.0之後可以使用$.support來判斷

// ie6789,input元素的checked屬性不能被拷貝

// ie會拷貝事件

if(!$.support.nocloneevent&&!$.support.noclonechecked)

$.support主要用於 jquery 的內部使用,感覺一點也不好用。

IE8,9下的ajax快取問題

原文 ie8,9下的ajax快取問題 最近在做乙個 的登入註冊框,前端使用了jquery。由於sign和login不是在單獨的頁面上,而是以乙個彈出框出現。所以決定使用ajax來實現註冊和登入功能。本以為可以一帆風順,結果在測試的時候發現了奇怪的問題。在用chrome ff ie10 測試的時候基本...

inline block在IE8,9的間隙問題

今天嘗試製作tab效果時候,發現在ie8,9下,有個性的inline block的元素在內容為空,或者內容是block的情況下,與下方block元素有間隙!在查詢相關例子並實踐發現,處理這種情況的解決方案是 設定inline block的父元素font size為零,然後再設定inline bloc...

Ajax的IE快取問題

ajax的ie快取問題,會造成用open時用get方法不能重複提交。解決的辦法有以下幾種 1.客戶端在url後新增隨機數.new date gettime 或者math.random 或者送請求前加上 或者用post方法提交 2.伺服器端禁用快取.response.setheader pragma ...