解决使用Ajax时浏览器的缓存问题
在最近的项目中使用到了ajax来批量导入更新数据,第一次提交正常,后面提交同样的订单就有问题了。订单明明已经处理了,可是界面还是提示没有处理。
查找了下原因,原来是ajax的缓存问题造成。
解决方法如下:
1、在服务端加 header("Cache-Control: no-cache, must-revalidate");(如php中)
2、在ajax发送请求前加上 anyAjaxObj.setRequestHeader("If-Modified-Since","0");
3、在ajax发送请求前加上 anyAjaxObj.setRequestHeader("Cache-Control","no-cache");
4、在 Ajax 的 URL 参数后加上 "?fresh=" + Math.random(); //当然这里参数 fresh 可以任意取了
5、第五种方法和第四种类似,在 URL 参数后加上 "?timestamp=" + new Date().getTime();
6、用POST替代GET:不推荐
在项目中使用第四种办法解决:Math.random(),加上这个随机参数后,系统正常了。
$.ajax({
type: "get",
async: false,
url: "../Handler/K3ImportDeliveryHandler.ashx?OrderId=" + text[i] + '&time=' + Math.random(),
beforeSend: function(XMLHttpRequest) {
$('#loading').show();
$('#txtLog').val($('#txtLog').val() + '【正在处理订单' + text[i] + '...】\n');
},
success: function(data, textStatus) {
$('#txtLog').val($('#txtLog').val() + data + '\n');
},
complete: function(XMLHttpRequest, textStatus) {
$('#loading').hide('slow');
},
error: function() {
}
});
🐳 作者:dupeng0811 📢 版权:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接 💬 留言:同时 , 如果文中有什么错误,欢迎指出。以免更多的人被误导。 |
|