360浏览器兼容模式下ajax请求第二次访问,不会请求接口问题
程序员文章站
2024-01-27 08:11:10
...
bug原因
代码如下
$.ajax({
url: '${root}/ajax/user/or_shop_and_elect',
dataType: 'json',
async: false,
success: function (rs) {
if (typeof rs !== 'boolean') {
if (rs.code === 30000) {
window.location.href =
${root}respMsg.data
+ "?skipUrl=${root}/web/user/user_center";
}
}else if (rs) {
$.askAlert(
'${root}/web/elect_center/save_elect',
'${root}/web/company/open_free_shop');
e.preventDefault();
}
}
});
在360浏览器兼容模式下,页面通过ajax方式请求一个接口时,会将返回的结果给缓存,当第二次去请求的时候不会调用后台的接口,这就导致了当我第一次访问过此接口后返回true,当我将结果修改为false是,返回的仍是true而不是false
360的兼容模式默认是IE,GET请求有缓存。
解决办法
解决办法:
- 第一种:在ajax请求的时候添加参数
cache: false
- 第二种:将接口改为使用post请求
- 第三种:在url后边拼一个时间戳,写法如下:
url: '${root}/ajax/user/or_shop_and_elect?t=' + Date.now()
上一篇: 解决办法:MySQL在插入含中文字符记录时报错问题
下一篇: 时间处理函数总结