1. 创建过程
1)创建XMLHttpRequest对象
var http = new XMLHttpRequest()
2)通过XMLHttpRequest对象的open方法建立起链接
http.open(method, url)
3)通过XMLHttpRequest对象的send方法进行数据传输
http.send(data)
4)通过XMLHttpRequest对象的onreadystatechange时间监听服务状态readyState,readyState属性值每次发生改变,onreadystatechange都会被触发
0:open未调用,1:send未调用,2:send已调用并且已返回响应头和响应状态,3:响应体正在下载,responseText(接收服务端响应的结果)获取到部分的数据, 4:请求过程完全结束
2. 完整实现
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://www.baidu.com');
xhr.send(null);
xhr.onreadystatechange = function() {
if(xhr.readyState === 4) {
if(xhr.status >= 200 && xhr.status < 300) {
console.log('success')
console.log(xhr.responseText)
} else {
console.log('error')
console.log(xhr.status)
console.log(xhr.responseText)
}
}
}
3. 封装
function ajax(options) {
var type = (options.type || 'GET').toUpperCase();
var dataType = options.dataType || 'json';
var data = options.data;
var xhr = new XMLHttpRequest();
if (type === 'GET') {
xhr.open('GET', options.url + '?' + data, true);
xhr.send(null)
} else if(type === 'POST'){
xhr.open('POST', options.url, true);
xhr.send(data);
}
xhr.onreadystatechange = function() {
if(readyState === 4) {
if (xhr.status >= 200 && xhr.status < 300) {
console.log('success')
} else {
console.log('error')
}
}
}
}