IE浏览器关于ajax的缓存机制
ie浏览器对于同一个url只返回相同结果。因为,在默认情况下,ie会缓存ajax的请求结果。对于同一个url地址,在缓存过期之前,只有第一次请求会真正发送到服务端。大多数情况下,我们使用ajax是希望实现局部刷新的,所以这就牵扯到一个改进的问题。
如果想每次都获取到最新数据,我们只需保证每次传入的url不一样。最简单的方法就是通过给url拼接参数。利用math函数的random()方法生成随机数。
比如访问百度www.baidu.com,我们就可以把地址写成www.baidu.com?t=math.random();或者?t=new date().gettime();
********************************分割线**********************************
说到这里,不妨复习一下ajax的基本用法。
*ajax创建对象:
var xmlhttp; if (window.xmlhttprequest){ //ie7+, firefox, chrome, opera, safari xmlhttp = new xmlhttprequest(); } else{ //ie6, ie5 xmlhttp=new activexobject("microsoft.xmlhttp"); }
*ajax请求:
//get请求: xmlhttp.open("get","test1.txt",true); xmlhttp.send(); //post请求: xmlhttp.open("post","demo_post.asp",true); xmlhttp.send();
get 还是 post?
与 post 相比,get 更简单也更快,并且在大部分情况下都能用。
然而,在以下情况中,请使用 post 请求:
- 无法使用缓存文件(更新服务器上的文件或数据库)
- 向服务器发送大量数据(post 没有数据量限制)
- 发送包含未知字符的用户输入时,post 比 get 更稳定也更可靠
*ajax响应:
要获得服务器的响应,需要使用xmlhttprequest 对象的 responsetext 或 responsexml 属性。
responsetext:获得字符串形式的响应数据。
document.getelementbyid("mydiv").innerhtml=xmlhttp.responsetext;
responsexml:获得xml形式的响应数据。
如果来自服务器的响应是 xml,而且需要作为 xml 对象进行解析。
*ajax - onreadystatechange :
当请求被发送到服务器时,我们需要执行一些基于响应的任务。
每当 readystate 改变时,就会触发 onreadystatechange 事件。
在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。
当 readystate 等于 4 且状态为 200 时,表示响应已就绪:
xmlhttp.onreadystatechange=function() { if (xmlhttp.readystate==4 && xmlhttp.status==200) { document.getelementbyid("mydiv").innerhtml=xmlhttp.responsetext; } }
上一篇: JavaScript文件加载器LABjs API详解
下一篇: 网虫的分类