IE 8缓存ajax调用

IE 8 caching ajax calls

本文关键字:调用 ajax 缓存 IE      更新时间:2023-09-26

我正在尝试使用ajax get方法获取一些数据,它在除IE之外的所有浏览器中都能很好地工作。在IE中,它在第一次调用时缓存数据,并缓存它,我需要防止它。我在代码中尝试了以下方法,但仍然无法解决问题

1) 在代码中全局设置缓存=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();

请帮我解决这个问题,过去两天它一直困扰着我。提前谢谢。

       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});     
        }

尽管我的代码是基于角度的,但我在所有服务调用中都使用了jQueryajax,但我试图根据浏览器实现角度和ajax调用,这解决了我的问题。我知道这可能不是正确的方法,但这是唯一对我有效的解决方案。

如本文所述,如何防止jQuery Ajax请求在Internet Explorer中缓存?如果使用cache: false选项,则不应缓存调用。我发现不同的是async选项。

因此,请尝试在ajax调用中将async: false更改为async: true