axios的底层ajax,XMLHttpRequest原理解释及使用方法

定义

ajax全称asychronous JavaScript and XML

意思是异步的 JavaScript和xml, 也就是通过javascript创建XMLHttpRequest (xhr)对象与服务器进行通信

步骤

创建实例对象,初始请求方法和url,设置监听器监听请求完成状态,发送请求

代码

html 复制代码
  <button class="xhrButton">注册</button>
  <script>
    const xhrButton = document.querySelector('.xhrButton')
    xhrButton.addEventListener('click', () => {
       // 传递请求体参数操作,对应axios中的data 数据原理
      // 需设置请求头的contentType内容为json和将对象转为字符串
      //Content-Type=application/json  
      //  application为形容词,应用程序级别的文本格式
      xhr.open('POST', 'http://hmajax.itheima.net/register')
      xhr.setRequestHeader('Content-Type', 'application/json')
      xhr.addEventListener('loadend', () => {
        console.log(xhr.response.data);

      })
      const user = {
        username: '555',
        password: '666'
      }
      const jsonData = JSON.stringify(user)
      const xhr = new XMLHttpRequest()
      
      // 传递查询参数操作,对应axios封装的params参数

      // 但是,如果有很多的参数我们都得使用多个模板字符串吗?
      // 这里使用到将多个参数转变为查询参数的api
      // const findParmas = {
      //   pa1: 1,
      //   pa2: 2,
      //   pa3: 3
      // }
      //构造函数创建出转换器对象,然后调用toString这个Api
      // const transform=new URLSearchParams(findParmas)
      // const data=transform.toString()

      // xhr.open('GET',`http://xxxxx?${data}`)
      // 这里的第三个参数为是否开启异步请求的布尔值

     
      xhr.send(jsonData)
      // 如果是查询参数则send里不需要填,参数在地址那填入
    })
  </script>

你可以通过使用urlsearchParam路径参数转换器将对象转为查询参数格式a=1&b=2 然后发送,对标axios里的params。

也可以将对象转为json字符串然后设置请求头为json类型的数据作为请求体在最后xhr.send(data)也就是axios里data那玩意发送给服务器

查看请求内容类型

相关推荐
mONESY1 分钟前
React Router v7 完全实战指南:从入门到鉴权,一套代码全搞定
javascript
他们叫我秃子7 分钟前
前端开发转 Go 全栈(五):终于遇到熟人了,Go 的闭包和高阶函数原来这么像 JavaScript
前端·后端·go
用户61595868000229 分钟前
从 0 写一个迷你 wujie:用原生 Web API 实现微前端
前端
妙码生花9 分钟前
从 PHP 到 AI + Golang,程序员自救转型手记(五十七):AI时代对组件封装的新理解、agInput 统一入口,动态表单预备
前端·后端·go
fairyly11 分钟前
接手新项目不用硬啃源码,我的 TRAE Work 快速上手实战工作流
前端·ai编程·trae
搬砖记录员12 分钟前
用 PyAutoGUI 手搓录屏"老板键":从原理到四套可跑源码,附工程化落地思考
前端
windliang12 分钟前
Claude Code 源码分析(七):Skill 如何进入 Agent
前端·人工智能·面试
To_OC12 分钟前
LC 74 搜索二维矩阵:换皮的二分查找,我居然一开始没看出来
javascript·算法·leetcode
栀鸢ouo13 分钟前
《Vue 3 实现多主题切换和自定义主题》
前端
缓冲中请稍后14 分钟前
React Router 完全指南:从 HashRouter 到 BrowserRouter
前端·面试