分享一下 《原生 AJAX》

206 阅读1分钟

我很菜,说的不对,各位大佬,多多批评,嘴下留情。

核心 (实例化对象)

XMLHttpRequest 是核心
var xhr = new XMLHttpRequest(); -->主流浏览器 
var xhr = new ActiveXObject('Microsoft.XMLHTTP') --> 针对ie 

xhr对象上的方法

open() : 建立到服务器的新的请求 
send() : 向服务器发送请求 
abort() : 退出当前请求 
readyState : 提供当前HTML的就绪状态 
responseText : 服务器返回的请求响应文本

xhr.open() 需要传递的参数

request-type 发送请求的类型 
url 要连接的URL地址 
asynch 是否希望异步进行(异步为true,同步为false 一般都为异步) 
userName 身份验证 (可选值) 
password 身份验证 (可选值)

HTTP就绪状态 ajax.readyState

1、请求已经建立但还没有发出(调用send()之前)
2、请求已经发出正在处理之中
3、请求已经处理,响应中通常有部分数据可以用,但是响应并没有完成 
4、响应完成 一般都只会判断 ajax.readyState == 4 
5、进而判断状态码是否是成功时返回的状态码 ajax.status == 200
6、如果 4、 5都能够成功地通过,我们就可以拿到我们需要的数据了 ajax.responseText

创建一个AJAX的步骤

1、创建ajax对象

var ajax = new XMLHttpRequest() || new ActiveXObject('Microsoft.XMLHTTP'); 

2、打开请求 

 ajax.open() 
判断 method == GET || POST 
如果是GET 
xhr.open(GET, url + '?' + data, true) //打开请求需要在url后面拼接上数据 
如果是POST 
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded') 需要   设置一个请求头 

 3、发送请求 

 xhr.send() 
如果是以POST请求发送的话,data这个值需要放在send里面发送出去。
xhr.send(data) 
GET 请求不变 
xhr.send() 

 4、监听 

 

xhr.onreadystatechange = function(){//监听请求状态

    if(xhr.readyState == 4){//监听状态码

        if(xhr.status == 200){//处理获取到的值

	    xhr.responseText
        }
    }
}