一、手写ajax
共5个步骤,创建xhr实例,创建http请求,
//1、创建一个XMLHttpRequest对象的实例,即创建一个异步调用对象
var xhr = new XMLHttpRequest();//用户把请求交给xhr,xhr把请求提交给服务器,处理后,服务器把响应数据给xhr对象,xhr对象接收数组后,由js把数据写到页面
//2、创建HTTP请求,可以使用XMLHttpRequest的open方法
xhr.open('GET','baidu.com',true);//默认该请求是异步
//3、设置响应HTTP请求状态变化事件的回调函数
xmlHttpRequest.onreadystatechange = getData;//readystatechange事件
//定义回调函数,无参数
function getData(){
//判断XMLHttpRequest对象的readyState属性值是否为4,如果为4表示异步调用完成
if(xmlHttpRequest.readyState == 4) {
//4、设置获取服务器返回数据的语句
if(xhr.status==200){
//得到返回结果,对返回结果做一些操作
//比如写入dom中
document.write(xhr.response)
}
}
}
//5、发送HTTP请求到web服务器上
XMLHttpRequest.send(data=null);
//6、在通过Ajax的异步调用获得服务器端数据之后,可以使用JavaScript或DOM来将网页中的数据进行局部更新。
二、ajax 的 readyState 有哪几个状态,含义分别是什么?
(1)定义
ajax 的 readyState:运行AJAX所经历过的几种状态,无论访问是否成功都将响应的步骤,可以理解成为AJAX运行步骤。如:正在发送,正在响应等,由AJAX对象与服务器交互时所得;使用“ajax.readyState”获得。(由数字0~4单位数字组成)
(2)ajax运行的各个过程的值和含义
0 - (未初始化)还没有调用send()方法,在定义后自动具有的状态值
1 - (载入)已调用send()方法,正在发送请求
2 - (载入完成)send()方法执行完成,
3 - (交互)正在解析响应内容
4 - (完成)响应内容解析完成,可以在客户端调用了,对于成功访问的状态(得到信息)我们大多数采用“4”进行判断。