ajax的 IE cache 相關(guān)問(wèn)題解決
function verify() {
$.ajax({
//issue for IE cache; timestamp=" + new Date().getTime()
url:"checkGroupName?timestamp=" + new Date().getTime(),
async: true,
data:"groupName=" + $("#cn").val()+"&groupTypeForDetail="+$("#groupType").val()+"&prefix="+$("#p").val(),
dataType:"html",
success:function(data){
if(data==1){
$("#result").html("<font color='green'>Group name["+$("#p").val()+ $("#cn").val()+"]Valid</font>");
$("#email").val($("#p").val()+ $("#cn").val()+$("#emailHidden").val());
$('#subData').removeAttr("disabled");
}else if(data==2){
$("#result").html("<font color='red'>Group name["+$("#p").val()+ $("#cn").val()+ "]already existed.</font>");
$('#subData').attr('disabled',"true");
}else{
$("#result").html("<font color='red'>Group name can not be empty.</font>");
$('#subData').attr('disabled',"true");
}
}
});
}
原理:
Firefox 每次 request 都會(huì)重新再回一次 server 取得最新的數(shù)據(jù),但是 IE 就不一樣了,它會(huì) cache 住之前得到的數(shù)據(jù),只有第一次 request 時(shí)會(huì)真正的去 server 讀取數(shù)據(jù),導(dǎo)致ajax數(shù)據(jù)不會(huì)隨時(shí)間而更新….
解決方案(從網(wǎng)上收集的):
1、在服務(wù)端加 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發(fā)送請(qǐng)求前加上 xmlHttpRequest.setRequestHeader("If-Modified-Since","0");
3、在ajax發(fā)送請(qǐng)求前加上 xmlHttpRequest.setRequestHeader("Cache-Control","no-cache");
4、在 Ajax 的 URL 參數(shù)后加上 "?fresh=" + Math.random(); //當(dāng)然這里參數(shù) fresh 可以任意取了
5、第四種方法和第三種類似,在 URL 參數(shù)后加上 "?timestamp=" + new Date().getTime(); //推薦使用這種方式,我用的就是這種,個(gè)人認(rèn)為比較方便。
6、用POST替代GET:不推薦
相關(guān)文章
有史以來(lái)最簡(jiǎn)單的AJAX回調(diào)庫(kù)
很多時(shí)候我們只要用到一些簡(jiǎn)單的Ajax功能,提供一些簡(jiǎn)單的回調(diào)而不需要很花哨的東西。然而現(xiàn)有的很多Ajax庫(kù)都很大,雖然功能很多但是我們很多時(shí)候根本就不需要用到他們,我就遇到過(guò)那樣的經(jīng)歷,所以我想弄一個(gè)很簡(jiǎn)單的Ajax回調(diào)函數(shù)來(lái)搞定。2008-10-10
ajax提交到j(luò)ava后臺(tái)之后處理數(shù)據(jù)的實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇ajax提交到j(luò)ava后臺(tái)之后處理數(shù)據(jù)的實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
菜鳥蔡之Ajax復(fù)習(xí)第二篇(JQuery中的load()方法實(shí)現(xiàn)Ajax功能)
在上一篇博客中寫到的是在傳統(tǒng)的Javascript中使用XMLHttpRequest對(duì)象異步加載數(shù)據(jù)的,唉,童鞋.......看到那些代碼是不是有點(diǎn)頭疼啊!呵呵......2012-11-11
ajax與websocket的區(qū)別以及websocket常用使用方式 介紹
這篇文章主要介紹了ajax與websocket的區(qū)別以及websocket常用使用方式 介紹,需要的朋友可以參考下2018-06-06
Ajax請(qǐng)求超時(shí)與網(wǎng)絡(luò)異常處理圖文詳解
最近在項(xiàng)目中遇到一個(gè)問(wèn)題,當(dāng)加載數(shù)據(jù)量特別大的時(shí)候會(huì)出現(xiàn)加載超時(shí)現(xiàn)象,所以這篇文章主要給大家介紹了關(guān)于Ajax請(qǐng)求超時(shí)與網(wǎng)絡(luò)異常處理的相關(guān)資料,需要的朋友可以參考下2021-05-05
Ajax請(qǐng)求成功后return無(wú)法接收到返回值的問(wèn)題及解決方案
項(xiàng)目中需要頻繁的用到ajax請(qǐng)求,所以就想用一個(gè)方法將整個(gè)請(qǐng)求封裝起來(lái),直接調(diào)用方法傳遞參數(shù),然后返回請(qǐng)求結(jié)果就可以了,這篇文章主要介紹了ajax請(qǐng)求成功后return無(wú)法接收到返回值,需要的朋友可以參考下2023-10-10
php ajax網(wǎng)站瀏覽統(tǒng)計(jì)功能的簡(jiǎn)單實(shí)現(xiàn)
這個(gè)功能應(yīng)該是很多網(wǎng)站都需要的,這里僅僅實(shí)現(xiàn)了一個(gè)基于文件的簡(jiǎn)易版本,數(shù)據(jù)庫(kù)的版本請(qǐng)自行參考實(shí)現(xiàn),我這里實(shí)現(xiàn)的功能很不完善,比如未過(guò)濾是否為同一訪客,是否為同一IP等等,這里僅僅是給大家提供一個(gè)參考.2008-09-09
AJAX在不同瀏覽器中XMLHttpRequest對(duì)象的生成示例
本文為大家介紹下AJAX在不同瀏覽器中XMLHttpRequest對(duì)象是怎樣生成的,以方便我們針對(duì)不同瀏覽器進(jìn)行測(cè)試,感興趣的朋友可以參考下,希望對(duì)大家有所幫助2013-07-07

