ajax发送异步请求
四步操作
1.XMLHttpRequest
大多数浏览器都支持
var xmlHttpRequest = new XMLHttpRequest();
但是有少数的浏览器不支持
IE6.0要这样
var xmlHttp = new ActiveXObject("Msxm12.XMLHTTP");
非常麻烦,很无语
还有IE5.5以及更早版本的IE
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
其实呢IE6.0以及之前的,没什么用了
如果是我,我就不写了,不管这些版本的垃圾浏览器了
编写一下创建XMLHttpRequest对象的函数
function createXMLHttpRequest(){
try{
return new XMLHttpRequest();
}catch(e){
return new ActiveXObject("Msxm12.XMLHTTP");
}
}
当然可以多套几层,把不同的创建对象的方式都写进去
但是我不想写了
第二步
xmlHttp.open()
用来打开与服务器的连接,需要三个参数
1.请求方式
2.请求url
3.请求是否为异步, true就是异步,否则为同步请求
xmlHttp.open("GET","/test/ABCServlet",true);
第三步
xmlHttp.send(null)
不传null的话可能会造成部分浏览器无法发送
这个参数是什么意思
就是请求体内容,如果是GET请求,必须给出NULL
如果是POST,要给出请求体
第四步
在xmlHttp对象的一个事件上,注册监听器
onreadystatechange
xmlHttp对象一共有5个状态
0: 初始化未完成状态,只创建了xmlHttpRequest对象,还没有open
1: 请求已经开始,open已经调用,但是还没有send
2: 请求发送完成,send方法已经调用
3: 开始读取服务器响应
4: 读取服务器响应结束
得到xmlHttp对象的状态
var state = xmlHttp.readState;
可能是0,1,2,3,4
得到服务器响应的状态码
var status = xmlHttp.status;
比如 200,404,500
服务器响应内容
var content = xmlHttp.responseText;
服务器响应的文本格式内容
var content = xmlHttp.responseXML; //得到服务器响应的xml格式内容
会自动解析,拿到的时候,已经是document对象了
//xmlHttp的5种状态都会调用这个方法
xmlHttp.onreadystatechange = function(){
//双重判断
//判断是否为4状态
//是否是200成功
if(xmlHttp.readyState==4&& xmlHttp.status==200){
//获取服务器响应内容
var text=xmlHttp.responseText;
}
}