IE针对Ajax请求结果的缓存IE浏览器同一个请求第二次是缓存数据不刷新

IE针对Ajax请求结果的缓存/ IE浏览器同一个请求第二次是缓存

一.在AJAX请求的属性上直接设置cache

 
    
function getSetServer (selectIDs) {
 
$.ajax({
url:'/kl_eas/v1/monitor/servers?'+ new Date().toTimeString() ,
method:'get',
async: false,
cache:false,//这行去缓存,cache只有GET方式的时候有效。
dataType:'json',
error: function (data) {
console.log(data);
},
success:function (data){
console.log(data )
bindData(data,selectIDs)
}
});
}

二、通过为URL地址添加后缀的方式解决问题
由于IE针对Ajax请求的返回的结果是根据请求地址进行缓存的,所以如果不希望这个缓存机制生效,我们可以在每次请求时为请求地址添加不同的后缀来解决这个问题。针对这个例子,我们通过如下的代码为请求地址添加一个基于当前时间的查询字符串,再次运行程序后IE中将会显示实时的时间。

 
    
<!DOCTYPE html>
 
<html>
 
<head>
<script type="text/javascript">
$(function () {
window.setInterval(function () {
$.ajax({
url:'@Url.Action("GetCurrentTime")?'+ new Date().toTimeString() ,
success: function (result) {
$("ul").append("<li>" + result + "</li>");
}
});
}, 5000);
});
</script>
</head>
</html>

三、通过jQuery的Ajax设置解决问题
实际上jQuery具有针对这个的Ajax设置,我们只需要按照如下的方式调用$.ajaxSetup方法禁止掉Ajaz的缓存机制。

 
    
<!DOCTYPE html>
 
<html>
 
<head>
<script type="text/javascript">
$(function () {
$.ajaxSetup({ cache: false }); //这行
window.setInterval(function () {
$.ajax({
url:'@Url.Action("GetCurrentTime")',
success: function (result) {
$("ul").append("<li>" + result + "</li>");
}
});
}, 5000);
});
</script>
</head>
</html>
posted on 2018-02-12 17:53 在代码上奔跑 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/liukaijie/p/8445222.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值