AJAX

86 阅读1分钟
  1. 定义: Asynchronous JavaScript + XML(异步 JavaScript 和 XML(XML 指可扩展标记语言(Extensible Markup Language)))是一种用于创建快速动态网页的技术,它可以在不完全加载页面的情况下js动态来抓取内容构建页面。

  2. 如何使用:

  • 请求和响应是一样的数据格式,分为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获取完整回应数据