ajax的 IE cache 相關問題解決_AJAX相關

來源:互聯網
上載者:User
運用Ajax做了一個名字檢驗,第一次是有效,但是提交過後,再檢驗一次,結果就不對了,是由於IE的cache的原因。
複製代碼 代碼如下:

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 都會重新再回一次 server 取得最新的資料,但是 IE 就不一樣了,它會 cache 住之前得到的資料,只有第一次 request 時會真正的去 server 讀取資料,導致ajax資料不會隨時間而更新….
解決方案(從網上收集的)
  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發送請求前加上 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:不推薦
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.