Ajax的兼容:
在ie 6 7 8 不支持XMLHttpRequest的对象;
他的Ajax内置对象为ActiveXObject("Microsoft XMLHTTP")
除了内置对象不一样外,剩下的都一样
兼容性的处理方法:
var http;
if(window.XMLHttpRequest){
http=new XMLHttpRequest;
}
else{
http=new ActiveXObject("Microsoft XMLHTTP")
}
最流行Ajax的轻量级插件
axios (post()的方法,官网给的传参的方法是错的,应用字符串格式传)
fetch插件
字段:比较短的字符串/数字/关键字
Ajax的缓存
浏览器的特性:浏览器不管你请求了多少次,他都会把每次的请求当第一次请求;
对于服务器来说,所有的请求都是第一次的,没有记忆功能(储存意识),这对于服务器来说是好事,对于客户来说就是坏事,就把这种解决的方式(记忆的能力cookie),给了客户端(浏览器)
Ajax缓存的优势
第一次请求的结果,会保存在缓存区,第二次相同请求的时候,直接在缓存区将数据返给,你不在向服务器请求了,增强了页面的响应速度和用户体验;
缓存的缺点
如果第二次请求的相似度过高,浏览器会认为是第一次请求的,就直接从缓存区拿数据,不向服务器请求占内存
cache:储存;
解决缓存的方法:
在参数后面加随机数或加时间戳(前台用最多的方法);
1.XMLHttpRequest.setRequestHeader("Cache-control","no-cache");
2.在服务端加header("Cache-control:no-cache,must-revalidate");
3.在Ajax发送请求前加上:
XMLHttpRequest.setRequestHeader("If-modified-since","0");
4.在Ajax的url参数后加上"?freash=zhang"+Math.random();
5.第5种方法和第四种方法类似,在url参数后加上:
"?timestamp="+new Date().getTime() (解释:new Date(获取当前时间) getTime()获取时间戳)