ajax发送异步请求(四步操作)
1、第一步(得到xmlHttpRequest对象)
- 得到XMLHttpRequest
大多数浏览器都支持:var xmlHttp = new XMLHttpRequest();
- 编写创建XMLHttpRequest对象的函数
function createXMLHttpRequest(){
try{
return new XMLHttpRequest();
}catch(e){
try{
...
}catch(e){
try{
...
}catch(e){
throw e;
}
}
}
}
2、第二部(打开与服务器的连接)
- xmlHttp.open();用来打开与服务器的连接,它需要三个参数
请求方式:post或者get
请求的url:置顶服务器端资源 例如 /PRO/AServlet
请求是否为异步:true:发送异步请求 否则同步请求
- xmlHttp.open("GET"," /PRO/AServlet",true);
3、第三步(发送请求)
- xmlHttp.send(null); 如果不给参数可能会造成部分浏览器无法发送。
参数就是请求体内容 ,如果是GET请求,必须写null;
4、第四步()
- 在xmlHttp对象的一个事件上注册监听器:onreadystatechange
- xmlHttp对象一共有5个状态:
0状态:刚创建还没有调用open方法
1状态:请求开始,open方法已经调用,send方法没有调用
2状态:调用完了send方法
3状态:服务器已经开始响应,但不表示响应结束
4状态:服务器响应结束(通常只关心最后这个状态)
- 得到xmlHttp对象的状态
var state = xmlHttp.readyState; //可能是0、1、2、3、4
- 得到服务器响应的状态码
var status = xmlHttp.Status;//例如 200 404 500
- 得到服务器响应的内容
var content = xmlHttp.responseText;//得到服务器响应的文本格式的内容
var content = xmlHttp.responseXML;//得到服务器响应的xml内容,此时content是document对象
xmlHttp.onreadystatechange = function(){//xmlHttp的5种状态都会调用这个方法
if(xmlHttp.readtState == 4 && xmlHttp.Status == 200){//双重判断,判断是否为4状态和200
//获取服务器的响应内容
var text = xmlHttp.responseText;
}
};