解决Ajax请求时 无法获取最新数据
2013-09-10 11:11
405 查看
今日在做Ajax的项目,发现一个问题:
提交数据后,取不回提交的数据。郁闷多时,仔细分析,发现后台日志没有取数据的消息,前端也没有出现“正在读入数据”的提示。因此觉得应该是系统缓存的问题,。
当手工清除IE缓存后,重新发出ajax请求,可以获取当前最新提交的数据
方法如下:
方法1:服务器端代码加入response.setHeader("Cache-Control", "no-cache, must-revalidate");
方法2:用JavaScript在Ajax提交的时候加入一个随机数作为URL中的一个参数。 Math.random)
$.getJSON(
ctx + "/service/*******/******.do",
{id : Math.random()}, <!--发送异步请求的时候,发送一个随机数,防止IE因为URL一样,使用缓存,而不重新发出请求-->
<!-- 用时间戳更好 -->
function (json) {
createData(json); //解析后台传过来的数据
});
原因:IE中如果XMLHttpRequest提交的URL与历史一样则使用缓存,根本不向服务器端提交。因此无法取到刚提交的数据
提交数据后,取不回提交的数据。郁闷多时,仔细分析,发现后台日志没有取数据的消息,前端也没有出现“正在读入数据”的提示。因此觉得应该是系统缓存的问题,。
当手工清除IE缓存后,重新发出ajax请求,可以获取当前最新提交的数据
方法如下:
方法1:服务器端代码加入response.setHeader("Cache-Control", "no-cache, must-revalidate");
方法2:用JavaScript在Ajax提交的时候加入一个随机数作为URL中的一个参数。 Math.random)
$.getJSON(
ctx + "/service/*******/******.do",
{id : Math.random()}, <!--发送异步请求的时候,发送一个随机数,防止IE因为URL一样,使用缓存,而不重新发出请求-->
<!-- 用时间戳更好 -->
function (json) {
createData(json); //解析后台传过来的数据
});
原因:IE中如果XMLHttpRequest提交的URL与历史一样则使用缓存,根本不向服务器端提交。因此无法取到刚提交的数据
相关文章推荐
- bug 由于浏览器缓存而引起的ajax请求并没有获取到服务器最新数据从而导致的bug
- 解决ajax、js无法跨域向服务器请求数据的问题
- AJAX 跨域请求的解决办法:使用 JSONP获取JSON数据
- 解决:在使用JSONP跨域请求时.AJAX的dataFilter获取返回数据出现undifined
- AJAX 跨域请求的解决办法:使用 JSONP获取JSON数据
- 关于IEajaxpost请求无法获取数据的BUG
- ajax请求获取的数据无法赋值给全局变量问题总结
- ajax 请求 无法获取数据的问题
- ajax中如何将utf-8编码的数据请求发送到gbk编码应用的解决方法
- 解决IE下jquery ajax 无法获取服务端新数据问题
- 函数内调用异步方法获数据,无法及时获取到赋值给返回值,解决
- angularjs发送post请求,servlet无法用getParameter(name)获取的解决方法,亲测有效
- 解决IE浏览器缓存导致AJAX请求数据异常
- IE9.0或者360下js(JavaScript、jQuery)不能正确执行(加载),按F12后执行正常;Firefox下ajax的success返回数据data(json、string)无法获取
- 解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
- IE9下Ajax无法刷新数据的缓存问题解决方法
- SpringMVC无法获取请求中的参数的问题的调查与解决(2)
- 解决ajax跨域请求数据cookie丢失问题
- 从ajax获取的数据无法通过Jquery选择器来调用事件