我正在尝试使用ajax GET方法获取一些数据,它在除IE之外的所有浏览器中都很有效。 在IE中,它是在第一次调用时缓存数据并缓存它我需要阻止它。 我在我的代码中尝试了以下方法,但仍然无法解决问题
1)在代码中全局设置caching = false $ .ajaxSetup({cache:false});
2)将其放入元标记
<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>
3)使用POST而不是GET方法
$.ajax({
cache: false,
type: "POST",
url: '/XYZURL/' + Id,
dataType: "json",
async: false,
success: function(Response) {
$scope.data = Response;
},
4)尝试在我的代码中包含此位但没有成功
if(url.replace("?") != url)
url = url+"&rand="+new Date().getTime();
else
url = url+"?rand="+new Date().getTime();
请帮我解决这个问题,过去2天一直困扰着我。 提前谢谢。
答案 0 :(得分:0)
var browser = window.navigator.userAgent;
var msie = browser.indexOf ( "MSIE " );
if(msie > 0){
var remoteId = index.entity.id;
var ie_fix = new Date().getTime();
$.ajax({
cache: false,
type: "GET",
url: '/XYZURL/' + Id,
dataType: "json",
async: true,
success: function(Response) {
$scope.data = Response;
},
error: function(jqXHR,errorThrown) {
alert("jqXHR");
}
});
}else{
$scope.data = datafactory.show({id: index.id});
}
尽管我的代码是基于角度的,我使用jQuery ajax进行所有服务调用但是尝试根据浏览器实现angular和ajax调用,这解决了我的问题。我知道这可能不是正确的方法,而是唯一对我有用的解决方案。
答案 1 :(得分:-1)
正如本文所述,How to prevent a jQuery Ajax request from caching in Internet Explorer?
如果您使用的是cache: false
选项,则不应缓存调用。我发现不同的是async
选项。
因此,在您的ajax调用中将async: false
更改为async: true
后尝试。