一、原生ajax兼容低版本IE6的写法
兼容老版本浏览器IE6创建对象的写法: new ActiveXObject(‘XMLHTTP’) 参数是字符串形式
一般情况都不再做IE6的兼容了,太古老
一切对象都是window的成员
if(window.XMLHttpRequest){
var xhr = new XMLHttpRequest();
} else {
var xhr = new ActiveXObject('XMLHTTP');
}
二、onload事件不兼容IE9以下
一般浏览器都支持onload事件
但有的onload事件仅支持IE9及以上版本的浏览器,IE6、IE7、IE8不兼容,则需要使用另外一个事件onreadystatechange
来兼容低版本的浏览器,onreadystatechange需要配合readyState使用(readyState状态)写法如下:
xhr.onreadystatechange = function(){
if(this.readyState!=4) return;
//1、写正常代码
//2、或者判断 if(this.response==4){正常代码}
}
原生ajax的readyState有5个状态,分别数字 0 、 1 、2、3、4表示。
如果状态是4,代表整个请求响应结束,此时可以获取响应结果了。
三、原生ajax设置GET请求类型,在IE下有缓存
如果原生ajax用的get请求
,那么在IE浏览器下会自动将第一次请求的url进行缓存(也就是将url保存起来了),下次再去请求这个url的时候,直接从缓存中获取
(不会再次请求服务器)
问题:
由于请求的url一直没变
,所以一直获取的本地缓存中的数据
解决办法:
1、修改url参数
, 在url地址后添加时间戳(new Date())或者 随机字符串
2、jQuery中的ajax中cache(布尔值)默认true,设置false不缓存