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()