IE浏览器下,ajax请求第一次发送成功,第二次显示调用后台接口来自缓存。

如图,因为使用了layui框架,本以为是table.on()事件影响,导致请求在IE浏览器上面,第一次请求,可以调用到后台接口,并且也能够保存数据,但是第二次发送就不成功,显示调用接口来自缓存。删除缓存之后,又可以再次发送一次成功。

查了资料之后才发现ajax的缓存原理,Ajax在发送的数据成功后,会把请求的URL和返回的响应结果保存在缓存内,当下一次调用Ajax发送相同的请求时,它会直接从缓存中把数据取出来,这是为了提高页面的响应速度和用户体验。当前这要求两次请求URL完全相同,包括参数。这个时候,浏览器就不会与服务器交互。

所以针对此问题,只需要在url后面添加一个随机数或者是时间戳,那么每次请求,都会是不同的url也会调用成功。

解决方案:

1.在 Ajax 的 URL 参数后加上 "?num=" + Math.random(); 

2.和上面的类似,在 URL 参数后加上 "?timestamp=" + new Date().getTime();

猜你喜欢

转载自blog.csdn.net/PhilipJ0303/article/details/100558569
今日推荐