JS复习-28-Ajax、异步

Ajax是前端与后端交互的重要技术,通过JavaScript实现异步数据交换。主要步骤包括创建XMLHttpRequest对象、配置请求、发送请求和处理响应。GET请求直接在URL后拼接参数,POST请求参数位于请求体,需设置content-type。Ajax状态码表示请求进度。关注点包括异步处理、参数传递和错误处理。

ajax

  前后端交互的一种手段
    + 通过 JS 向服务端发起请求
      => 所有服务端返回的响应都不会直接显示再页面上
      => 而是返回给 js 这个语言
  说明: JS 和服务端交互
      => 依赖于浏览器来发送请求
  ajax
      => a: async
      => j: javascript
      => a: and
      => x: xml

使用方式

    1. 找到一个对象能帮我发送 ajax 请求
      => XMLHttpRequest() 内置构造函数
      => 专门创建实例化对象帮你发送 ajax 请求

    2. 对本次请求进行一些配置
      => open() 的方法
      => 语法: xhr.open(请求方式, 请求地址, 是否异步)
        -> 请求方式: GET POST PUT ...(大小写无所谓)
        -> 请求地址: 你要请求哪一个后端位置
        -> 是否异步: 选填, 默认是 true, 可以选填 false, 表示同步

    3. 把请求发出去
      => send() 方法
      => 语法: xhr.send()

    4. 接收响应
      => onload 事件
      => 语法: xhr.onload = function () {}
      => 本次请求结束以后触发(响应成功了以后触发)
      => xhr 里面有一个属性叫做 responseText 就是响应体

ajax 的异步问题

    1. open 的第三个参数可以配置
      => 默认是 true 表示异步
      => 可以选填 false 表示 同步

  分析四个步骤
    1. 创建 ajax 对象, 同步代码
    2. 配置请求信息, 同步代码
    3. 发送请求, 异步代码, 当代码执行到这句话的时候, 先把请求发出去
      => 等到响应的过程是异步
    4. 事件, 会在满足条件的时候触发
      => 条件: 响应回来

ajax 状态码

    + 状态码
      => 响应状态码: 描述本次请求的状态
      => ajax状态码: 描述 ajax 进行到哪一个步骤了
    + 语法:  xhr.readyState

    0: 创建 ajax 对象成功
    1: 配置请求信息完成
    2: 请求发送出去了, 响应报文回到了浏览器
    3: 浏览器正在解析响应报文
    4: 浏览器解析响应报文成功, 已经可以正常使用 xhr.responseText

发送一个带有参数的 get 请求

    + GET 请求就是直接再地址栏后面拼接 queryString 方式携带参数
    + open 的第二个参数就是请求地址
    + 我们把要携带给后端的内容通过 open 的第二个参数携带过去
	const xhr = new XMLHttpRequest()

    xhr.open('GET', './server/get.php?a=100&b=200')

    xhr.onload = function () {
      console.log(JSON.parse(xhr.responseText))
    }
    xhr.send()

发送一个带有参数的 post 请求

    + POST 携带参数是在请求体, 不需要再地址栏拼接
      => 数据格式无所谓, 但是要和 content-type 配套
    + send() 的括号里面就是请求体
    + 因为你没有设置 content-type 所以后端不能正常按照 $_POST 的方式解析
      => 设置一下请求头, content-type 设置为 application/x-www-form-urlencoded
      => 语法: xhr.setRequestHeader(key, value)
	const xhr = new XMLHttpRequest()

    xhr.open('POST', './server/post.php')

    xhr.onload = function () {
      console.log(JSON.parse(xhr.responseText))
    }
    // post 请求需要再请求之前设置请求头
    xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')
    xhr.send('a=100&b=200')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值