ajax的封装
1、创建一个ajax对象XMLHttpRequest
首先声明一个常量
var=xhr
然后判断当前设备是否兼容
if(window.XMLHttpRequest)
{
xhr=new XMLHttpRequest();
}else{
xhr=new ActiveXObject("Microsoft.XMLHTTP");
}
2、向服务器发送请求
1.xhr.open(method,url,async)
2.send(string);//post请求时才使用字符串参数,否则不用带参数。
xhr.open("POST","test.html",true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send("fname=Henry&lname=Ford"); //post请求参数放在send里面,即请求体
xhr.open()中有三个参数,分别是:
- method:请求的类型;GET 或 POST;
- url:文件在服务器上的位置;
- async:true(异步)或 false(同步) 注意:post请求一定要设置请求头的格式内容
3、服务器相应处理
responseText 获得字符串形式的响应数据。
responseXML 获得XML 形式的响应数据。
1.同步处理
1. xhr.open("GET","info.txt",false);
2. xhr.send();
3. document.getElementById("myDiv").innerHTML=xhr.responseText; //获取数据直接显示在页面上
2.异步处理
1. xhr.onreadystatechange=function() {
2. if (xhr.readyState==4 &&xhr.status==200) {
3. document.getElementById("myDiv").innerHTML=xhr.responseText;
4. }
5. }
什么是readyState?
readyState是XMLHttpRequest对象的一个属性,用来标识当前XMLHttpRequest对象处于什么状态。 readyState总共有5个状态值,分别为0~4,每个值代表了不同的含义
- 0:未初始化 -- 尚未调用.open()方法;
- 1:启动 -- 已经调用.open()方法,但尚未调用.send()方法;
- 2:发送 -- 已经调用.send()方法,但尚未接收到响应;
- 3:接收 -- 已经接收到部分响应数据;
- 4:完成 -- 已经接收到全部响应数据,而且已经可以在客户端使用了;
什么是status?
HTTP状态码(status)由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:
- 1->服务器收到请求,需要请求者继续执行操作
- 2->操作被成功接收并处理
- 3->重定向、需要进一步操作完场请求
- 4->客户端错误、请求出现语法错误或请求无法完成
- 5->服务器错误、服务器处理请求时发生错误
常见的状态码
-
200 请求成功并被处理
-
204 请求处理成功,但是未返回数据
-
302 表示临时性重定向。
-
401 表示未授权(Unauthorized),当前请求需要用户验证
-
403 表示对请求资源的访问被服务器拒绝了
-
404 表示服务器上无法找到请求的资源。除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。
-
500 表示服务器端在执行请求时发生了错误。也有可能是Web应用存在的bug或某些临时的故障。
-
503 表示服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。