Ajax的缓存问题
来源:互联网 发布:python编程是什么意思 编辑:程序博客网 时间:2024/06/05 11:25
因为一直对Ajax都有一种望而生畏的感觉,所以一直也没仔细的研究过,好多事情都一样当你一开始觉得很难的时候它的难度就会比你预想的还难.大概这就是心理作用的影响吧.
今天要做一个无刷新验证用户名是否重复的功能不得不用Ajax了所以也就硬着头皮看了一下,本来看的是jQuery的Ajax的使用,但是前面介绍了一下传统的Ajax,看了一下竟然没有想象的那么难,于是试着用传统的方式做了一个小验证.
代码如下:
<script language="javascript" type="text/javascript"> var xmlHttpReq = null; function Ajax() { var re = /^[a-zA-Z0-9]{4,16}$/; if (!re.test($("#<%=txtName.ClientID %>").attr("value"))) { alert("账号4-16位;只限数字(0-9)和英文(a-z)"); return; } if (window.ActiveXObject) { xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); } else if (window.XMLHttpRequest) { xmlHttpReq = new XMLHttpRequest(); } xmlHttpReq.open("get", "ControllerPage.aspx?t=" + new Date() + "&Page=usermanage&Act=checkname&Name=" + $("#<%=txtName.ClientID %>").attr("value"), true); xmlHttpReq.onreadystatechange = RequestCallBack; xmlHttpReq.send(null); } function RequestCallBack() { if (xmlHttpReq.readyState == 4) { if (xmlHttpReq.status == 200) { if (xmlHttpReq.responseText == "ok") { alert("账号可以使用!"); $("#<%=btnOK.ClientID %>").attr("disabled", ""); } else { alert("账号已存在!"); $("#<%=btnOK.ClientID %>").attr("disabled", "disabled"); } } } } </script>
遇到的问题:
1.验证无效,用alert打了一下断点发现xmlHttpReq.status的值是500,于是进入ControllerPage.aspx,发现是因为这个页面会报黄页,改正bug后就好了.
2.添加新的用户后再添加相同的用户名结果验证的提示还是可以使用,但是如果刷新一下ControllerPage.aspx后验证功能就又好使了,我就郁闷了,后来发现是缓存的问题,解决方式如下
xmlHttpReq.open("get", "ControllerPage.aspx?t=" + new Date() + "&Page=usermanage&Act=checkname&Name=" + $("#<%=txtName.ClientID %>").attr("value"), true);
加上了一个随时都在变的时间戳就好了,缓存问题得以解决,在这里要感谢一位大神同事的帮助.
上面是我遇到的问题以及解决方式,mark一下,希望对遇到此问题的同学有用.
贴上一篇在百度查到的解决方式:
Ajax要使用时间戳提交 及时更新的
当你的ajax需要的数据是及时更新的,也就是说在没有刷新页面的情况下,得到其他操作的新数据,你的ajax提交url中加入一个时间戳,这样,就可以避免页面使用缓存了,原理是:时间戳本事就是一个随时更新的变量,时间戳只是一个叫法,你可以这么理解:你的url中加了一个随时更新的变量,,那么,提交时是不会使用缓存的。
var url = "insertData.jsp?textName="+nameAdd+"&date="+new Date().getTime();
var url = "insertData.jsp?textName="+nameAdd+"&date="+Math.random();
ajax清空缓存的问题
在ajax的应用中,当用户访问一次后,再进行访问当XMLHttpRequest请求不变的时,在ie中会出现这样的现象,那就是取数据不会到服务器端取,而是直接从ie的缓存中取,则会就是ie的缓存问题。在ajax中解决缓存的问题采用时间戳的方式,即为每个XNLHttpRequest请求后面加一个时间戳的标志,从而保证每次请求都是新的从而解决ie缓存问题。
- ajax的缓存问题
- ajax的缓存问题
- Ajax缓存的问题
- AJAX的缓存问题
- Ajax的缓存问题
- ajax的缓存问题
- 解决 Ajax 的缓存问题
- ajax与缓存的问题!
- AJAX缓存问题的解决办法
- ajax缓存问题的解决办法
- Ajax缓存问题的解决办法
- jquery的ajax缓存问题
- jquery的ajax的缓存问题
- 解决ajax页面缓存的问题
- AJAX缓存问题的解决方法(IE)
- ajax中存在缓存的问题
- 解决ajax页面缓存的问题
- struts启动流程,ajax的缓存问题
- Jquer GridView内嵌 DropDownList 和 TextBox 取值
- linux的一些基本操作
- <s:if test="canSubscribe == 'Y'">能 </s:if> <s:else>不能 </s:else> 单字符需加.toString()
- 自定义navigationBar的高度
- 本地wamp的Internal Server Error错误解决方法
- Ajax的缓存问题
- 【操作系统联机命令的类型】
- Ubuntu下添加开机启动脚本
- IPtables中SNAT、DNAT和MASQUERADE的区别
- android 圆角编辑框
- Ext4+Servlet+HTML5实现实时获取文件上传进度、本地预览、文件拖拽上传的相册实例
- 风格化的 Toggle Buttons
- C++ 内存管理之五(数组 vs 指针)
- Android 读取assets目录下的文件