解决使用Ajax时浏览器的缓存问题

本文探讨了在项目中使用AJAX批量导入数据时遇到的问题,主要是由于缓存导致的数据处理状态显示错误。提供了包括服务端设置Header、AJAX请求头设置以及在URL参数中加入随机数或时间戳等解决方案,确保数据请求的时效性和正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


======================================================
注:本文源代码点此下载
======================================================

在最近的项目中使用到了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() {

}

});

作者:dap

出处:http://dupeng0811.cnblogs.com/

本文版权归作者和博客园共有,欢迎转载,请在文章页面明处给出原文连接.

绿色通道:好文要顶关注我收藏该文与我联系


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值