如何在Internet Explorer中防止jQuery Ajax请求被缓存?
如何在Internet Explorer中防止jQuery Ajax请求被缓存?
您可以使用$.ajaxSetup()
来全局禁用缓存,例如:
$.ajaxSetup({ cache: false });
当发出请求时,这会在查询字符串中添加一个时间戳。要为特定的$.ajax()
调用关闭缓存,请在本地设置cache: false
,例如:
$.ajax({
cache: false,
//other options...
});
cache: false
只能在HEAD和GET请求中正确使用。另外,如果你在$.ajaxSetup
中设置了cache: false
,根据jQuery.ajaxSetup()文档,它将“为未来的Ajax请求设置默认值”。因此,是的,它会禁用所有未来的HEAD和GET AJAX请求的缓存。 - John Washamcache: false
给予 +1 的支持。全局禁用缓存似乎过于极端,但对每个请求进行控制则非常完美。谢谢。 - iCollect.it Ltd如果您设置了唯一的参数,那么缓存将不起作用,例如:
$.ajax({
url : "my_url",
data : {
'uniq_param' : (new Date()).getTime(),
//other data
}});
cache
参数在幕后已经执行的操作。 - Jose Rui SantosCache-Control: no-cache, no-store
这两个头部值可以结合使用,以在IE和Firefox上获得所需的效果
cache
参数在幕后已经执行的操作。 - Jose Rui Santoslet table = $('.datatable-sales').DataTable({
processing: true,
responsive: true,
serverSide: true,
ajax: {
url: "<?php echo site_url("your url"); ?>",
cache: false,
type: "POST",
data: {
<?php echo your api; ?>,
}
}
$.get({url: <?php echo json_encode(site_url('your api'))?>, cache: false})
希望能够帮到您
这是一篇旧文章,但如果IE浏览器给你带来了麻烦。将你的GET请求改为POST,IE就不会再缓存它们。
我花了太多时间才通过艰难的方式弄清楚这一点。希望能对你有所帮助。
cache:false
是正确的做法。 - tommybond