Loading

解决使用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() {
}
});



posted @ 2011-11-15 17:20  Dhoopu  阅读(357)  评论(0编辑  收藏  举报