-
定义: Asynchronous JavaScript + XML(异步 JavaScript 和 XML(XML 指可扩展标记语言(Extensible Markup Language)))是一种用于创建快速动态网页的技术,它可以在不完全加载页面的情况下js动态来抓取内容构建页面。
-
如何使用:
-
请求和响应是一样的数据格式,分为4部分:
-
请求行或者响应行
-
Header(请求的 Header 中 Host 字段是必须的,其他都是可选)
-
\r\n\r\n(连续两个换行回车符,用来分隔Header和Body)
-
Body(可选)
//获取登录页面
//创建AJAX对象
var r = new XMLHttpRequest()
//设置请求方法和请求地址
r.open('GET', '/login', true)
//注册响应函数
r.onreadystatechange = function() {
if(r.readyState == 4) {
console.log('请求成功', r.responseTEXT.length)
}
}
//发送请求
r.send()
- ajax封装
//发送登陆数据
//创建Ajax对象
var Ajax = function(method, path, data, reseponseCallback) {
var r = new XMLHttpRequest()
//设置请求和请求地址
r.open(method, path, true)
r.setRequestHeader('Content-Type', 'application/json')
//注册响应函数
r.onreadystatechange = function() {
console.log('r', r)
if(r.readyState === 4) {
reseponseCallback(r)
}
}
//发送请求
r.send(data)
}
Ajax('POST', path, data, function(r) {
var t = JSON.parse(r.response)
console.log(t)
})
-
readystate 变量,此属性只读,状态长度为4的整数表示:
-
0(未初始化)对象已建立,但是尚未发送请求(尚未调用open方法)
-
1(初始化)已调用send()方法,正在发送请求
-
2(发送数据)send方法调用完成,但是当前的状态码及HTTP头未知
-
3(数据传输中)已接收部分数据但是响应及HTTP头不全,这是通过responseBody和responseText获取部分数据会出现错误
-
4(完成)数据接收完毕,此时可以通过responseBody和responseText获取完整回应数据