三、Ajax加强(axios)

目录

XMLHttpRequest的基本使用

使用xhr发起GET请求

查询字符串

URL编码与解码

使用xhr发起POST请求

数据交换格式

JSON对象结构:

JSON数组结构

JSON语法注意事项

JSON和JS对象的互转

XMLHttpRequest Level2的新特性

①可以设置 HTTP 请求的时限

②可以使用 FormData对象管理表单数据

提交表单数据

快速获取网页表单填写提交数据

③可以上传文件

④可以获得数据传输的进度信息

显示文件上传速度

使用jQuery方法上传文件

axios

axios发起get请求

axios发起post请求

axios直接发送请求


XMLHttpRequest的基本使用

XMLHttpRequest(简称xhr)是浏览器提供的Javascript对象,通过它,可以请求服务器上的数据资源。之前所学的 jQuery中的Ajax函数,就是基于xhr对象封装出来的。

使用xhr发起GET请求

不带参数的GET请求:

  // 1. 创建 XHR 对象
  var xhr = new XMLHttpRequest()
  // 2. 调用 open 函数,指定 请求方式 与 URL地址
  xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks')
  // 3. 调用 send 函数,发起 Ajax 请求
  xhr.send()
  // 4. 监听 onreadystatechange 事件
  xhr.onreadystatechange = function() {
      // 4.1 监听 xhr 对象的请求状态 readyState ;与服务器响应的状态 status
      if (xhr.readyState === 4 && xhr.status === 200) {
          // 4.2 打印服务器响应回来的数据
          console.log(xhr.responseText)
      }
  }

XMLHttpRequest对象的readyState属性,用来表示当前 Ajax 请求所处的状态。每个 Ajax请求必然处于以下状态中的一个:

状态 描述
0 UNSENT XMLHttpRequest 对象已被创建,但尚未调用 open方法。
1 OPENED open() 方法已经被调用。
2 HEADERS_RECEIVED send() 方法已经被调用,响应头也已经被接收。
3 LOADING 数据接收中,此时 response 属性中已经包含部分数据。
4 DONE Ajax 请求完成,这意味着数据传输已经彻底完成或失败。

带参请求:

          ......
  xhr.open('GET','http://www.liulongbin.top:3006/api/getbooks?id=1')
  //在调用 xhr.open 期间,为 URL 地址指定参数即可
          ......

这种在 URL 地址后面拼接的参数,叫做查询字符串

查询字符串

查询字符串(URL参数)是指在URL的末尾加上用于向服务器发送信息的字符串(变量)

  // 不带参数的 URL 地址
  http://www.liulongbin.top:3006/api/getbooks
  // 带一个参数的 URL 地址
  http://www.liulongbin.top:3006/api/getbooks?id=1
  // 带两个参数的 URL 地址
  http://www.liulongbin.top:3006/api/getbooks?id=1&bookname=西游记

GET请求携带参数本质 无论使用 ,还是使用​.get(),又或者直接使用xhr对象发起GET请求,当需要携带参数的时候,本质上,都是直接将参数以查询字符串的形式,追加到URL地址的后面,发送到服务器的

  $.get('url', {name: 'zs', age: 20}, function() {})
  // 等价于
  $.get('url?name=zs&age=20', function() {})
  ​
  $.ajax({ method: 'GET', url: 'url', data: {name: 'zs', age: 20}, success: function() {} })
  // 等价于
  $.ajax({ method: 'GET', url: 'url?name=zs&age=20', success: function() {} })

URL编码与解码

如果 URL中需要包含中文这样的字符,则必须对中文字符进行编码(转义),使用英文字符去表示非英文字符

浏览器提供了URL编码与解码的API,分别是:

​         lencodeURI() 编码的函数

​         ldecodeURI() 解码的函数

  <script>
          var str = '前端工程师'
          var str1 = encodeURI(str)
          console.log(str1)   // %E5%89%8D %E7%AB%AF %E5%B7%A5 %E7%A8%8B %E5%B8%88 三个一组分别表示 前 端 工 程 师
          var str2 = '%E5%B7%A5%E7%A8%8B%E5%B8%88'
          var str3 = decodeURI(str2)
          console.log(str3) //工程师
      </script>

使用xhr发起POST请求

  // 1. 创建 xhr 对象
  var xhr = new XMLHttpRequest()
  // 2. 调用 open()
  xhr.open('POST', 'http://www.liulongbin.top:3006/api/addbook')
  // 3. 设置 Content-Type 属性(固定写法)
  xhr.setRequestHeader('Content-Type' , 'application/x-www-form-urlencoded')
  // 4. 调用 send(),同时将数据以查询字符串的形式,提交给服务器
  xhr.send('bookname=水浒传&author=施耐庵&publisher=天津图书出版社')
  // 5. 监听 onreadystatechange 事件
  xhr.onreadystatechange = function() {
      if (xhr.readyState === 4 && xhr.status === 200) {
          console.log(xhr.responseText)
      }
  }

数据交换格式

数据交换格式,就是服务器端与客户端之间进行数据传输与交换的格式。

JSON 就是 Javascript 对象和数组的字符串表示法,它使用文本表示一个JS对象或数组的信息,因此,JSON 的本质是字符串。

JSON是一种轻量级的文本数据交换格式

JSON就是用字符串来表示Javascript的对象和数组。所以,JSON中包含对象和数组两种结构,通过这两种结构的相互嵌套,可以表示各种复杂的数据结构。

JSON对象结构:

对象结构在JSON中表示为{} 括起来的内容。数据结构为{key: value, key: value, … } 的键值对结构。其中,key必须是使用英文的双引号包裹的字符串,value的数据类型必须是数字、字符串、布尔值、null、数组、对象6种类型。

  {
      "name": "zs",
      "age": 20,
      "gender": "男",
      "address": null,
      "hobby": ["吃饭", "睡觉", "打豆豆"]
  }

JSON数组结构

数组结构在 JSON中表示为[]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值