問題描述:
1、在做異步更新圖片的時候,,改變了img節(jié)點的src,但是img 圖片還是沒有更新
2、異步提交數(shù)據(jù)到后臺,如用jquery的$.ajax,$.post,$.get ,發(fā)現(xiàn)數(shù)據(jù)提交不到后臺,后臺接收不到異步提交上來的數(shù)據(jù)\
問題原因:
由于很多瀏覽器都具備了數(shù)據(jù)緩存的機制,特別是圖片的加載,當(dāng)你加載完圖片之后,如果你再次加載圖片的路徑和上次加載圖片的路徑是一樣的,
瀏覽器就不從后臺拿數(shù)據(jù)了,直接把你上次瀏覽的數(shù)據(jù)緩存下來,然后拿給你,這樣的好處是可以提高用戶體驗,客戶端瀏覽數(shù)據(jù)更快,不好的地方是,
后臺更新的數(shù)據(jù)不能馬上反饋到前臺
解決方法:
在頁面表頭添加,避免數(shù)據(jù)緩存
<meta http-equiv="pragma" content="no-cache"/>
<meta http-equiv="cache-control" content="no-cache"/>
<meta http-equiv="expires" content="0"/>
然后,每次更新數(shù)據(jù)的路徑,可以加上隨機的參數(shù),例如在后臺用system類生成一個隨機數(shù)直接加在返回路徑后面
String random = System.currentTimeMillis()+"" ;
return "http://localhost:8080/XiongFeng/ClientFeedBackComfirm.jpg?random="+random
在前臺,我們用異步機制提交數(shù)據(jù)到后臺的時候,我們也可以在后面添加隨機數(shù)(new Date()).getTime()
$.ajax({
cache: false,
type: "POST",
url:"hotel/HandleDeskOrderCart?time="+(new Date()).getTime(),
data:$('#deskForm').serialize(),// 你的formid
error: function(request) {
alert("網(wǎng)絡(luò)出現(xiàn)錯誤");
return ;
},
success: function(data) {
alert(data);
}
});
這樣后臺就不會因為緩存而接收不到數(shù)據(jù)