ajax实现原理

通过创建XMLHttpRequest()实例对象,实现后台与服务器的数据交互
新浏览器
XMLHttpRequest()
IE5,IE6
ActiveXObject
所以要做兼容处理

function createXHR () {
    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest()
    } else {
        xhr = new ActiveXObject("Microsoft.XMLHTTP")
    }
}
通过open()和send()方法去发送数据,这个方法有是三个参数,第一个参数为请求方式,第二个参数为请求文件,第三个是是否异步操作
```js
xhr.open("GET", "test.php", true)
// 如果是get方式,则send可以为null,因为get方式的参数是通过字符串拼接传递给后台的
xhr.send(null)
// 如果是post方式,则send()里面需要传入参数
xhr.send(data)

如果要添加请求头,则可以在send()方法之前设置请求头格式

xhr.setRequestHeader(头名称,头的值)
// 例如:
xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");

如果执行的是异步操作,则需要在服务器响应就绪后执行,如果是同步操作则不需要,直接可以赋值

xhr.onreadystatechange = function () {
    if (xhr.readyState == 4 && xhr.status == 200) {}
}

// readyState有五个状态
0: 请求未初始化
1: 建立服务器连接
2: 请求已接收
3: 请求处理中
4: 请求已完成

// status有两个状态
200: 请求成功
404: 页面没找到

请求数据返回的一般有两个格式,responseText && responseXML
数据请求完成后结束请求

xhr.end()
posted @ 2019-04-17 16:46  不会代码的前端  阅读(325)  评论(0编辑  收藏  举报