day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理)

这篇具有很好参考价值的文章主要介绍了day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

Bootstrap之Modal:

显示和隐藏方法

通过自定义属性:

使用JS来控制弹框:

Bootstrap之Toast:

接口文档一些用法:

删除图书:

图片上传:

图片上传步骤:

修改头像:

AJAX原理:

使用XHLHTTPREQUEST四步走:

XHLHTTPREQUEST--查询参数:

XHLHTTPREQUEST--请求参数:

Promise:

Promise三种状态:

封装简易axios

Bootstrap之Modal:

Modal 模态 (弹框)

功能:不离开当前页面,显示单独内容,供用户操作

day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理),前端学习,bootstrap,前端,html

<!-- 引入bootstrap.css -->
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet">

<!-- 引入bootstrap.js -->
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.min.js"></script>

显示和隐藏方法

通过自定义属性:

查询Bootstrap官网可知,通过给按钮添加自定义属性即可实现弹框的显示和隐藏;

但是这种显示和隐藏就是单纯的点击就显示或者隐藏,不能有其他功能。要实现点击按钮执行了某些功能再显示或隐藏,需要用到JS来控制显示隐藏。

day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理),前端学习,bootstrap,前端,html

使用JS来控制弹框:

day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理),前端学习,bootstrap,前端,html

显示myModal.show()

隐藏myModal.hide()

Bootstrap之Toast:

day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理),前端学习,bootstrap,前端,html

显示与modal提示框一样,可以通过属性或者JS的方式来显示。

接口文档一些用法:

删除图书:

请求参数来路径上,路径上的是图书的id.

day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理),前端学习,bootstrap,前端,html

图片上传:

请求参数是form-data,需要借助JS内置构造函数FormData()

day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理),前端学习,bootstrap,前端,html

图片上传步骤:

day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理),前端学习,bootstrap,前端,html

1. 准备文件类型的input标签用来上传

day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理),前端学习,bootstrap,前端,html

2. 给文件绑定改变事件,即一旦有图片上传则会引起改变

在此点击事件中,找到图片专属的file对象这个在服务器中需要使用 ←  e.target.files[0] 

day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理),前端学习,bootstrap,前端,html

3. 创建图片专属的form-data

const fd = new FormData()
fd.append('img',e.target.files[0])

4. 上传至服务器,获取图片专属url:

axios({
url:'http://hmajax.itheima.net/api/uploadimg',
method:'POST',
data:fd
}).then((result)=>{
//图片的url
result.data.data.url
})

day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理),前端学习,bootstrap,前端,html

修改头像:

步骤:类似图片上传

文件选择元素 -> change事件 -> 获取头像file -> 创建头像fd(这里与图片不同 见下) ->拿到头像url->返回给头像标签

day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理),前端学习,bootstrap,前端,html

AJAX原理:

axios内部有XHR 前面就因为此而实现的交互,但是实际中可能只需要用到XHR这几行代码,这时候就不需要引入axios了

day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理),前端学习,bootstrap,前端,htmlday27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理),前端学习,bootstrap,前端,html

使用XHLHTTPREQUEST四步走:

day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理),前端学习,bootstrap,前端,html

axios 在返回的时候会把JSON字符串转成对象再进行返回,是因为内部有转换的代码,实际上拿到的xhr.response是JSON字符串。

day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理),前端学习,bootstrap,前端,html

XHLHTTPREQUEST--查询参数:

参数对象 →  查询对象 →  查询字符串

// 要查询的对象
const Obj = {
参数名1:值1,
参数名2:值2
}
// 1. 创建URLSearchParams对象,将要查询的对象转为→ url查询参数对象
const paramsObj = new URLSearchParams(Obj)
// 2. 生成指定格式查询参数字符串
const queryString = paramsObj.toString()   //结果: 参数名1=值1&参数名2=值2


day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理),前端学习,bootstrap,前端,html

XHLHTTPREQUEST--请求参数:

请求参数在请求体中

// 构造请求头
xhr.setRequestHeader('Content-Type','application/json')
// 由请求头可知,传入的请求体必须为JSON字符串,因此要准备请求体对象 → 请求体JSON字符串
// 由此也可知,为什么axios中只需要传入请求体对象,因为内部会将其转化为JSON字符串
const data = {
username:'lili',
password:888888
}
const userStr = JSON.stringify(user)
//发送请求体
xhr.send(userStr)

day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理),前端学习,bootstrap,前端,html

Promise:

表示一个管理异步操作最终状态和结果值的对象

//resolve(a) 会将a作为then(result=>{})中的result传递过去

//reject(a) 会将a作为catch(err=>{})中的err传递过去

day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理),前端学习,bootstrap,前端,html

eg:

 /**
     * 目标:使用Promise管理异步任务
    */

    const p = new Promise((resolve, reject) => {
      // 执行异步任务
    //如果成功执行,则会调用resolve()函数,从而触发then()执行,
 //若失败则会调用reject()函数,从而触发catch()执行
      setTimeout(() => {
        // resolve('成功调用')
        reject(new Error('调用失败'))
      }, 2000)

    })

    console.log(p) //可以得到promise状态码


    p.then((result) => {
      console.log(result)
    }).catch((err) => {
      console.log(err)
    })
Promise三种状态:

Promise对象创建时,代码就会执行了,异步代码的fulfilled状态兑现(在执行resolve()时会兑现)则执行then();异步代码的rejected状态兑现(在执行reject()时会兑现)则执行catch()。

// 状态码一旦兑现(已拒绝或已兑现) 就不会改变

day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理),前端学习,bootstrap,前端,html文章来源地址https://www.toymoban.com/news/detail-724517.html

封装简易axios

 //  1. 定义myAxios函数,接收配置对象,返回Promise对象
    function myAxios(config) {
      return new Promise((resolve, reject) => {
        // 2. 发起XHR请求
        const xhr = new XMLHttpRequest()
        // 3. 判断有无params选项,携带查询参数
        // 此判断要写在url之前,因为会改变到url,使用URLSearchParams转换,转化为指定格式
        if (config.params) {
          const paramsObj = new URLSearchParams(config.params)
          const queryString = paramsObj.toString()
          // 创建完查询参数后,还需将其放入url中
          // 4.携带到url上
          config.url += `?${queryString}`
        }
        //默认请求方法为GET
        xhr.open(config.method || 'GET', config.url)
        xhr.addEventListener('loadend', () => {
          // 3. 调用成功/失败的处理程序v
          if (xhr.status >= 200 && xhr.status < 300) {
            resolve(JSON.parse(xhr.response))
          } else {
            reject(new Error(xhr.response))
          }

        })
        //  4. 判断有data选项,携带请求体
        if (config.data) {
          // 请求体转化为json字符串
          const jsonStr = JSON.stringify(config.data)
          // 设置请求头
          xhr.setRequestHeader('Content-Type', 'application/json')
          xhr.send(jsonStr)
        } else { xhr.send() }
      })
    }


     //调用
     document.querySelector('.reg-btn').addEventListener('click', () => {
      myAxios({
        url: 'http://hmajax.itheima.net/api/register',
        method: 'POST',
        data: {
          username: '你是我的小苹果oppp',
          password: '66668896'
        }
      }).then(result => {
        console.log(result)
      }).catch(err => {
        console.dir(err)
      })
    })
     

到了这里,关于day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ElementPlusError:[ElPagination] 你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档

    💂 个人网站: 【紫陌】【笔记分享网】 💅 想寻找共同学习交流、共同成长的伙伴, 请点击【前端学习交流群】 今天在做项目的时候突然发现控制台有一个警告但是不影响使用,之前还没有的,今天竟然出现。我就怀着好奇看看到底是什么问题。我用的是ElementPlus。 控制台

    2023年04月20日
    浏览(26)
  • Bootstrap之JavaScript的模态框(modal)使用-不离开父窗体的情况下的互动-点击按钮弹出对话框

    Bootstrap的JavaScript的模态框(modal)是覆盖在父窗体上的子窗体。通常,目的是显示一个单独的内容,可以在不离开父窗体的情况下有一些互动。 子窗体可以自定义内容,可提供信息展示、交互等功能。 运行效果如下: 一个完整的模态框包括三个部分:头部、正文和页脚,分别

    2024年02月04日
    浏览(36)
  • LuatOS-SOC接口文档(air780E)--mcu - 封装mcu一些特殊操作

    常量 类型 解释 mcu.UART number 外设类型-串口 mcu.I2C number 外设类型-I2C mcu.SPI number 外设类型-SPI mcu.PWM number 外设类型-PWM mcu.GPIO number 外设类型-GPIO mcu.I2S number 外设类型-I2S mcu.LCD number 外设类型-LCD mcu.CAM number 外设类型-CAM 设置主频,单位MHZ 参数 传入值类型 解释 int 主频,根据设备的

    2024年02月07日
    浏览(34)
  • 【C++ Boost】一个最基本的异步boost async tcp 服务/客户端代码的深刻解析,一文解决所有接口的用法以及一些容易出错的点

    1.官网链接 https://www.boost.org/doc/libs/1_80_0/doc/html/boost_asio.html 本文代码是以官方实例代码做的一些优化 2.平台选择      Boost 最令人惊艳的地方有两个:一是支持跨平台,即windows和linux下的接口代码都是一样的;二是支持异步操作,即可以让read和write操作不阻塞。      因此

    2024年02月06日
    浏览(49)
  • BootStrap文档

    ​ 1. 概念: 一个前端开发的框架,Bootstrap,来自 Twitter,是目前很受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JavaScript 的,它简洁灵活,使得 Web 开发更加快捷。 ​ 框架:一个半成品软件,开发人员可以在框架基础上,在进行开发,简化编码。 ​ 好处: ​ 1. 定义了很多的

    2024年02月08日
    浏览(30)
  • Bootstrap-学习文档

    Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。 Bootstrap是前端开发中比较受欢迎的框架,简洁且灵活。它基于HTML、CSS和JavaScript,HTML定义页面元素,CSS定义页面布局,而JavaScript负责页面元素的响应。Bootstrap将HTML、CSS和JavaScript封装成一个个功能组件,用起来简洁

    2024年02月15日
    浏览(34)
  • AJAX-day03-AJAX进阶

     (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 同步代码和异步代码 回调函数地狱   Promise - 链式调用   Promise 链式应用 async函数和await async函数和await_捕获错误 事件循环-EventLoop   认识 - 事件循环(EventLoop) 事件

    2024年02月16日
    浏览(31)
  • AJAX-day02-AJAX原理

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 XMLHttpRequest 了解XMLHttpRequest 使用 XMLHttpRequest   XMLHttpRequest - 查询参数 XMLHttpRequest - 数据提交 Promise 了解Promise Promise - 三种状态 封装_简易axios_获取省份列表   定义: 关系

    2024年02月16日
    浏览(28)
  • 【LeetCode题目详解】(一些双指针的题目)27. 移除元素

    给你一个数组 nums   和一个值 val ,你需要 原地 移除所有数值等于  val   的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组 。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 说明: 为什

    2024年01月22日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包