Ajax入门与使用

目录

[◆ AJAX 概念和 axios 使用](#◆ AJAX 概念和 axios 使用)

[什么是 AJAX?](#什么是 AJAX?)

[怎么发送 AJAX 请求?](#怎么发送 AJAX 请求?)

如何使用axios

[axios 函数的基本结构](#axios 函数的基本结构)

[axios 函数的使用场景](#axios 函数的使用场景)

[1 没有参数的情况](#1 没有参数的情况)

[2 使用params参数传参的情况](#2 使用params参数传参的情况)

[3 使用data参数来处理请求体的数据](#3 使用data参数来处理请求体的数据)

[4 上传图片等二进制的情况](#4 上传图片等二进制的情况)

[form-serialize 插件](#form-serialize 插件)


◆ AJAX 概念和 axios 使用

什么是 AJAX?

概念:AJAX 是浏览器与服务器进行数据通信的技术

怎么发送 AJAX 请求?

  1. 使用 axios [æk'sioʊs] 库
  • 基于 XMLHttpRequest 封装、代码简单
  • Vue、React 项目中都会用到 axios
  1. 使用 XMLHttpRequest 对象

如何使用axios

语法:

1. 引入 axios.js

2. 使用 axios 函数

axios 函数的基本结构

  • url

这个参数是必须的,里面填的是请求的url地址

  • method

这个参数是可选的,默认请求的是GET方法,参数内容不区分大小写

  • params

这个参数主要是替代以前的字符串拼接的方法,填在params里面的参数会以字符串拼接的方式,将参数凭借到url地址上。但这里会对参数值进行url编码

  • data

这个参数主要是用于接收请求体或者二进制参数,所以如果参数是表单数据或者二进制数据,需要使用data这个对象来接收

  • axios的回调处理--then()函数

这个函数主要是处理axios请求成功后返回的数据数据,里面接收一个回调函数

axios的回调处理--catch()函数

这个函数主要是处理axios请求失败后返回的数据数据,里面接收一个回调函数

axios 函数的使用场景

前提条件:成功的引入了js的依赖后

1 没有参数的情况
javascript 复制代码
//场景1:无参数的请求
//不填请求方法参数,默认是GET请求
    axios({
      url: 'http://hmajax.itheima.net/api/province'
    }).then(function(result){
      //请求成功调用
      console.log(result);
    }).catch(function(error){
      //请求异常调用
      console.log(error);
    })
2 使用params参数传参的情况
javascript 复制代码
//场景2:使用params参数的请求
     axios({
      url: 'http://hmajax.itheima.net/api/city',
      params: {
        pname: '辽宁省'
      }
    }).then(function(result){
      //请求成功调用
      console.log(result);
    }).catch(function(error){
      //请求异常调用
      console.log(error);
    })

使用箭头函数来替代匿名函数

3 使用data参数来处理请求体的数据

当请求方法是post方法时,参数会以请求体的方式向服务器提交

javascript 复制代码
  // 场景3  使用data参数来处理请求体的数据
    axios({
      url: 'http://hmajax.itheima.net/api/register',
      method: 'post',
      data: {
        username: 'jack12345',
        password: '123456'
      }
    }).then(result=>{
      //请求成功调用
      console.log(result);
    }).catch(error=>{
      //请求异常调用
      console.log(error);
    })
4 上传图片等二进制的情况
    1. 获取图片文件对象
    1. 使用 FormData 携带图片文件
    1. 提交表单数据到服务器,使用图片 url 网址
html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
 
</head>
<body>
  <!-- 文件选择元素 -->
  <input type="file" class="upload">
  <img src="" alt="">

  <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  <script>
    //场景1:无参数的请求
    // axios({
    //   url: 'http://hmajax.itheima.net/api/province'
    // }).then(function(result){
    //   //请求成功调用
    //   console.log(result);
    // }).catch(function(error){
    //   //请求异常调用
    //   console.log(error);
    // })

     //场景2:使用params参数的请求
    //  axios({
    //   url: 'http://hmajax.itheima.net/api/city',
    //   params: {
    //     pname: '辽宁省'
    //   }
    // }).then(function(result){
    //   //请求成功调用
    //   console.log(result);
    // }).catch(function(error){
    //   //请求异常调用
    //   console.log(error);
    // })

    // // 场景3  使用data参数来处理请求体的数据
    // axios({
    //   url: 'http://hmajax.itheima.net/api/register',
    //   method: 'post',
    //   data: {
    //     username: 'jack12345',
    //     password: '123456'
    //   }
    // }).then(result=>{
    //   //请求成功调用
    //   console.log(result);
    // }).catch(error=>{
    //   //请求异常调用
    //   console.log(error);
    // })


      //4  上传图片等二进制的情况
     //1. 获取图片文件
     document.querySelector('.upload').addEventListener('change',(e)=>{
        //  console.log(e.target.files); 
        //2. 使用 FormData 携带图片文件
        const fd = new FormData()
        // append()  追加元素
        fd.append('img',e.target.files[0])

        //使用ajax提交数据
        axios({
          url: 'http://hmajax.itheima.net/api/uploadimg',
          method: 'post',
          data: fd
        }).then(result=>{
          console.log(result);
          // console.log(result.data.data.url);
          document.querySelector('img').src = result.data.data.url
        }).catch(error=>{
          console.log(error);
        })

    })

  </script>
</body>
</html>

在日常的开发中基本大概是这四种常见的情况,学会用这几种,基本上可以解决问题

form-serialize 插件

作用:快速收集表单元素的值

使用:

  • 1 获取表单对象
  • 2 使用serialize函数,快速收集表单元素的值
html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>13.form-serialize插件使用</title>
  <script src="./lib/form-serialize.js"></script>
</head>

<body>
  <form action="javascript:;" class="example-form">
    <input type="text" name="uname">
    <br>
    <input type="text" name="pwd">
    <br>
    <input type="button" class="btn" value="提交">
  </form>
  <!-- 
    目标:在点击提交时,使用form-serialize插件,快速收集表单元素值
  -->
  <script>
    //为提交按钮设置监听事件
    document.querySelector('.btn').addEventListener('click', () => {
      //使用插件快速获取表单元素值
       /**
       * 2. 使用serialize函数,快速收集表单元素的值
       * 参数1:要获取哪个表单的数据
       *  表单元素设置name属性,值会作为对象的属性名
       *  建议name属性的值,最好和接口文档参数名一致
       * 参数2:配置对象
       *  hash 设置获取数据结构
       *    - true:JS对象(推荐)一般请求体里提交给服务器
       *    - false: 查询字符串
       *  empty 设置是否获取空值
       *    - true: 获取空值(推荐)数据结构和标签结构一致
       *    - false:不获取空值
      */
      const form = document.querySelector('.example-form')
      const data = serialize(form,{hash:true,empty:true})

      console.log(data);
    })
  </script>
</body>

</html>
相关推荐
一个处女座的程序猿O(∩_∩)O1 小时前
小型 Vue 项目,该不该用 Pinia 、Vuex呢?
前端·javascript·vue.js
hackeroink4 小时前
【2024版】最新推荐好用的XSS漏洞扫描利用工具_xss扫描工具
前端·xss
迷雾漫步者6 小时前
Flutter组件————FloatingActionButton
前端·flutter·dart
向前看-6 小时前
验证码机制
前端·后端
燃先生._.7 小时前
Day-03 Vue(生命周期、生命周期钩子八个函数、工程化开发和脚手架、组件化开发、根组件、局部注册和全局注册的步骤)
前端·javascript·vue.js
高山我梦口香糖8 小时前
[react]searchParams转普通对象
开发语言·前端·javascript
m0_748235248 小时前
前端实现获取后端返回的文件流并下载
前端·状态模式
m0_748240259 小时前
前端如何检测用户登录状态是否过期
前端
black^sugar9 小时前
纯前端实现更新检测
开发语言·前端·javascript