Bootstrap-Table在IE11中表格更新后data-url不刷新(无服务端调用)
解决Bootstrap-Table在IE11中AJAX请求缓存的问题
我之前也踩过IE11这个缓存的坑,Bootstrap-Table的data-url请求被浏览器死死缓存,页面刷新后还是显示旧数据,确实头疼。给你几个亲测有效的解决思路:
1. 在请求中添加随机参数
让每次请求的URL都带上一个唯一的参数(比如时间戳),这样IE会认为是全新的请求,不会读取缓存。可以通过Bootstrap-Table的queryParams配置实现:
$('#delegateTable').bootstrapTable({ url: '你的数据接口地址', queryParams: function(params) { // 添加时间戳参数,确保每次请求URL不同 params._t = Date.now(); return params; }, // 你的其他表格配置... });
2. 直接禁用AJAX缓存
Bootstrap-Table底层依赖jQuery的AJAX,所以可以通过ajaxOptions配置直接禁用缓存:
$('#delegateTable').bootstrapTable({ url: '你的数据接口地址', ajaxOptions: { cache: false }, // 你的其他表格配置... });
当cache设为false时,jQuery会自动给GET请求添加一个_参数(值为时间戳),和第一种方法原理类似,但配置更简洁。
3. 后端设置响应头禁止缓存
从根源上让浏览器不缓存这个接口的响应,在后端返回数据时添加以下HTTP响应头:
Cache-Control: no-cache, no-store, must-revalidate Pragma: no-cache Expires: 0
这个方法对所有浏览器都有效,尤其是IE这种对缓存格外“执着”的浏览器,推荐和前端配置配合使用,双重保险。
另外,如果是用refresh方法手动刷新表格,确保上面的配置已经生效,调用方式如下:
$('#delegateTable').bootstrapTable('refresh');
内容的提问来源于stack exchange,提问作者gene b.
相关产品推荐
相关产品推荐

