问题描述:
1、在做异步更新图片的时候,,改变了img节点的src,但是img 图片还是没有更新
2、异步提交数据到后台,如用jquery的$.ajax,$.post,$.get ,发现数据提交不到后台,后台接收不到异步提交上来的数据\
问题原因:
由于很多浏览器都具备了数据缓存的机制,特别是图片的加载,当你加载完图片之后,如果你再次加载图片的路径和上次加载图片的路径是一样的,
浏览器就不从后台拿数据了,直接把你上次浏览的数据缓存下来,然后拿给你,这样的好处是可以提高用户体验,客户端浏览数据更快,不好的地方是,
后台更新的数据不能马上反馈到前台
解决方法:
在页面表头添加,避免数据缓存
<meta http-equiv="pragma" content="no-cache"/>
<meta http-equiv="cache-control" content="no-cache"/>
<meta http-equiv="expires" content="0"/>
然后,每次更新数据的路径,可以加上随机的参数,例如在后台用system类生成一个随机数直接加在返回路径后面
String random = System.currentTimeMillis()+"" ;
return "http://localhost:8080/XiongFeng/ClientFeedBackComfirm.jpg?random="+random
在前台,我们用异步机制提交数据到后台的时候,我们也可以在后面添加随机数(new Date()).getTime()
$.ajax({
cache: false,
type: "POST",
url:"hotel/HandleDeskOrderCart?time="+(new Date()).getTime(),
data:$('#deskForm').serialize(),// 你的formid
error: function(request) {
alert("网络出现错误");
return ;
},
success: function(data) {
alert(data);
}
});
这样后台就不会因为缓存而接收不到数据