XMLHttpRequest的基本使用

1.1、什么是XMLHttpRequest

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

                                          

 

 1.2、使用xhr发起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) {
      // 获取服务器响应速度
      console.log(xhr.responseText);
    }
  }

 1.3、了解 xhr 对象的 readyState属性

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

1.4、使用 xhr 发起带参数的 GET 请求

使用xhr对象发起带参数的GET请求时,只需在调用xhr.open期间,为URL地址指定参数即可:

xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks?id=1')

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

1.5、查询字符串

1.5.1 什么是查询字符串

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

格式:将英文的 ? 放在URL的末尾,然后再加上参数=值,想加上多个参数的话,使用 & 符号进行分隔。以这个形式,可以将想要发送给服务器的数据添加到URL中

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

 1.5.2 GET请求携带参数本质

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

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

1.6、URL编码与解码

1.6.1、 什么是URL编码

URL地址中,只允许出现英文相关的字母、标点符号、数字,因此,在URL地址中不允许出现中文字符

如果URL中需要包含中文这样的字符,则必须对中文字符进行编码(转义)

URL编码的原则:使用安全的字符(没有特殊用途或者特殊意义的可打印字符)去表示那些不安全的字符

URL编码原则的通俗理解:使用英文字符去表示非英文字符

http://www.liulongbin.top:3006/api/getbooks?id=l&bookname=西游记
//经过UR编码之后,URL地址变成了如下格式:
http://www.liulongbin.top:3006/api/getbooks?id=1&bookname=%E8%A5%B8 %E6%B8%B8 %E8%AE%B0

1.6.2、如何对URL进行编码与解码

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

encodeURI( ) 编码的函数

decodeURI( ) 解码的函数

 // 编码
  var str = '小猪佩奇'
  var str2 = encodeURI(str)
  console.log(str2);

  // 解码
  var str3 = '%E5%B0%8F%E5%B0%8F'
  var str4 = decodeURI(str3)
  console.log(str4);

1.7、使用xhr发起POST请求

<script>
  // 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.调用函数
  xhr.send('bookname=水浒传&author=施耐庵&publisher=上海出版社')
  // 5.监听
  xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {
      console.log(xhr.responseText);
    }
  }
</script>
posted @ 2022-05-02 10:57  生活在北极的企鹅  阅读(125)  评论(0编辑  收藏  举报