ajax重复提交到相同url时出现的问题
如
$.ajax({
url : url,
success : function(ret) {
if (!noProgress){cniia.closeProgress();}
if (onSuccess) {
onSuccess(ret);
}
},
error : function(data) {
if (!noProgress){cniia.closeProgress();}
cniia.showAlert("服务器错误,请稍候访问!");
}
});
同一个url多次请求,即使做了修改的操作但是打开页面时仍然无更新,
加上个属性cache : false, 用于去缓存,
$.ajax({
url : url,
cache : false, //ie8相同url,不重复发送请求到后台,导致角色授权后,页面无法更新
success : function(ret) {
if (!noProgress){cniia.closeProgress();}
if (onSuccess) {
onSuccess(ret);
}
},
error : function(data) {
if (!noProgress){cniia.closeProgress();}
cniia.showAlert("服务器错误,请稍候访问!");
}
});
问题解决!
在Ajax开发中,会遇到浏览器缓存内容的问题,比如,某个元素注册了鼠标事件(onmouseover),事件触发后会通过xmlhttprequest到服务器获取内容,在不刷新页面的情况下,浏览器会缓存第一次请求的内容,服务端更新后浏览器仍然显示第一次的内容。
通常,这种请求都是xmlhttprequest发起的GET请求。根据 HTTP 规范,GET 用于信息获取,而且应该是幂等的。也就是说,当使用相同的URL重复GET请求会返回预期的相同结果时,GET方法才是适用的。当对一个请求有副作用的时候(例如,提交数据注册新用户时),应该使用POST请求而不是GET。所以浏览器会对GET请求做缓存处理。
解决办法:
一. GET请求URL后加随机数,让服务器认为不是相同的请求。
例 "http://www.example.com/index.php?class=aitcle&page=5&_t=" + new Date().getTime()
二. 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader("If-Modified-Since","0")
三. 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader("Cache-Control","no-cache");
四. 服务端响应请求时加 header("Cache-Control: no-cache, must-revalidate"); (PHP)
五. 使用POST代替GET,浏览器不会对POST做缓存
ajax重复提交到相同url时出现的问题的更多相关文章
- 防止ajax重复提交
在jquery中防止ajax重复提交
- 如何解决ajax重复提交的问题
如下一段代码: 先忽略我没引jquery.js的问题,这是一个案例. 当我们点击提交时,控制台输出两次e,在network里查看,可以看到我们的ajax传输了两次,造成了数据重复提交. 一种解释为bu ...
- query 防止ajax重复提交
项目用到js了,首选jquery,能用库用库,原则. 碰到重复提交的问题,禁止住才行.百度google,还是Google给力. 知乎上有个高人,总结了四种,利用Jquery .post方法返回jqXH ...
- 【javascript】利用jquery ajaxPrefilter防止ajax重复提交
利用jquery ajaxPrefilter中断请求 var pendingRequests = {}; $.ajaxPrefilter(function( options, originalOpti ...
- 防止jquery ajax 重复提交
var requestSent = false; jQuery("#buttonID").click(function() { if(!requestSent) { request ...
- ajax 重复提交
1.一次点击事件触发两次请求,找到的原因是重复引用了同一个.js文件,后台返回来的数据是个页面,在这个页面里面又引用了.js,所以导致一次点击多次请求
- 在jquery中防止ajax重复提交
- ASP.NET 使用Session,避免用户F5刷新时重复提交(转)
1.使用Session,避免用户重复提交(F5刷新时) 0.起因 当用户上传文件后F5刷新浏览器会导致文件的重复提交和相关程序的重复执行. 1.实现原理 由于刷新提 ...
- ajax防止重复提交请求1
ajax防止重复提交请求 A. 独占型提交 只允许同时存在一次提交操作,并且直到本次提交完成才能进行下一次提交. module.submit = function() { if (this.pro ...
随机推荐
- 关于smali插桩
虽说是老生常谈的东西了,稍微记录一下. 我觉得最重要的就是寄存器的问题了,如果需要额外的寄存器,要在smali函数的最前面将寄存器数量增加到需要的数量. 在smali代码中,寄存器有两种表示方式,一种 ...
- jquery 设置asp:dropdownlist 选中项
$("#ddlPro").find('option').each(function () { this.selected = (this.text == dlprom); });
- 诡异的_DEBUG宏
学习VLD1.0代码,发现Release版本的代码_DEBUG宏是已定义的,查找工程配置确只有NDEBUG宏的定义,不见_DEBUG的踪影. 好吧,最后发现是由于工程Code Generation选项 ...
- Android中的Menu
Android中的设置按钮:长按或点击菜单键 1.长按选项: 布局文件: <LinearLayout xmlns:android="http://schemas.android.com ...
- Python入门之中文乱码
python入门编码: Python 文件中如果未指定编码,有中文代码时候,在执行过程会出现报错: File "test.py", line 2 SyntaxError: Non- ...
- sqlmap的详细使用
各项参数讲的太仔细了,对于只会几个参数的我来说,太受用了. 先mark下 http://drops.wooyun.org/tips/143 http://drops.wooyun.org/tips/4 ...
- C99新特性
c99标准允许使用变长数组,变的意思是可以根据变量的值来指定数组的维数,如根据用户的输入值指定数组的大小,印象中以前是不可以的.现在在gcc中是可以的(PS:ansi c标准是C90标准): ==== ...
- MVC 创建带图片的<A></A>标签
<a href="@Url.Action("Detail", "Product", new { messageId = item.message ...
- 打造坚固的安全的Linux服务器(ssh登录篇)
Nov 3 01:22:06 server sshd[11879]: Failed password for root from 123.127.5.131 port 38917 ssh2Nov ...
- LGA(land grid array)
产品应用 1.射频功放 2.加速度传感器 3.地磁传感器 可靠性 Reliability 高压蒸煮 PCT 121℃,100%RH,2atm,96hrs 高低温循环 TCT -55℃(15min)~1 ...