AJAX的封装

465 阅读2分钟

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 表示服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。