ajax重复提交到相同url时出现的问题
2013-09-26 17:25
281 查看
如
$.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 : 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,重复发送请求后台,页面无更新的问题解决
- Ext的ajax同步交互方式提交时相同url只执行一次的问题解决
- j2ee的web项目怎么防止,重复提交的问题?(即点击了提交,后台新增了两条数据,也就是说,其实是点了多次提交,发起了多次http url,这样就插入了多条相同数据,但是主键id是不同的)
- IE浏览器下ajax重复提交的问题处理
- JavaWeb学习——Ajax提交URL中文参数乱码问题
- 用jquery验证用户名是否有效或重复以及ajax出现的问题
- 注册登录过程点滴(三):解决MVC3中使用Ajax.BeginForm会重复提交数据的问题
- 关于bootstrapValidator 表单校验remote出现两次重复提交才能验证通过问题处理
- html+springMVC的拦截器token配置--解决ajax表单重复提交的问题
- jquery-mvc中ajax重复提交(click重复绑定)以及点击没反应问题
- 【jQuery】 ajax 提交表单问题--双击会重复提交;success函数不执行
- 注册登录过程点滴(三):解决MVC3中使用Ajax.BeginForm会重复提交数据的问题 推荐
- ajax提交出现的问题记载
- 关于ajax重复提交的问题
- IE下使用form表单提交到iframe中出现的重复提交问题
- ajax的beforeSend 提交等待问题 (ajaxSubmit相同)
- URL重写后提交表单出现的问题
- github 提交原创代码出现的问题-The requested URL returned error: 403 和github Permission denied (publickey) 的问题
- AJAX连续提交相同URL注意事项
- Form和$.ajax.post重复提交问题解决记录