Ajax图书管理业务

这篇具有很好参考价值的文章主要介绍了Ajax图书管理业务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

图书管理业务

Ajax图书管理业务

需求: 对服务器的图书数据进行 增、删、改、查。功能的实现,同时实时动态的渲染刷新页面内容

根据功能模块分为四个业务模块,下面有各个业务的实现步骤

01_ 渲染图书列表业务

* 目标1:渲染图书列表

* 1.1 获取数据

* 1.2 渲染数据

业务1代码
// 固定的携带参数别名
const creator = '刘不住'
// 封装 -获取并渲染图书列表函数
function getBooksList() {
    //1.1 获取数据
    axios({
        url: 'http://hmajax.itheima.net/api/books',
        params: {
            // 传递外号:获取对应数据
            creator
        }
    }).then((result) => {
        console.log(result)
        const bookList = result.data.data
        console.log(bookList)
        // 1.2 渲染数据
        const htmlStr = bookList.map((item,index) => {
            return `<tr>
            <td>${index + 1}</td>
            <td>${item.bookname}</td>
            <td>${item.author}</td>
            <td>${item.publisher}</td>
            <td>
              <span class="del">删除</span>
              <span class="edit">编辑</span>
            </td>
          </tr>`
        }).join('')
        console.log(htmlStr)
        document.querySelector('.list').innerHTML = htmlStr
    })
}
// 网页加载运行,获取并渲染列表一次
getBooksList()
02_新增图书业务

目标2:新增图书

​ * 2.1 新增弹框 -> 显示和隐藏

​ * 2.2 收集表单数据,并提交给服务器

​ * 2.3 刷新图书列表、同时重置表单

业务2代码
// 2.1 创建一个弹框对象
const addModalDom = document.querySelector('.add-modal')
const addModal = new bootstrap.Modal(addModalDom)
// 给保存按钮添加点击事件
document.querySelector('.add-btn').addEventListener('click', () => {
    // 2.2 收集表单数据,并提交给服务器
    const form = document.querySelector('.add-form')
    // 使用serialize插件的函数获取拥有anme属性的表单值
    const data = serialize(form, { hash: true, empty: true })
    // 使用对象解构对获取的值进行处理,用于提交数据
    const { bookname, author, publisher } = data
    console.log(data)
    // 2.2.1 向服务器发送提交请求(提交到服务器)
    axios({
        url: 'http://hmajax.itheima.net/api/books',
        method: 'post',
        data: {
            ...data,
            creator
        }
    }).then(result => {
        console.log(result)
        // 2.3 服务器响应后我们需要重新渲染图书数据列表
        getBooksList()
        // 重置表单
        form.reset()
        // 隐藏弹框
        addModal.hide()
    })
})

这里的显示,我们使用bootstrap属性控制就可以了,但是隐藏我们需要提交数据,所以我们使用js来控制。

03_删除图书业务

* 目标3: 删除图书

* 3.1 删除元素绑定点击事件 -> 获取图书id

* 3.2 调用删除接口

* 3.3 刷新图书列表

业务3代码
// 3.1 删除元素 -> 点击(事件委托) 动态创建,我们委托父级
document.querySelector('.list').addEventListener('click', e => {
    // console.log(e.target)
    // 判断用户点击的元素
    if (e.target.classList.contains('del')) {
        // console.log('点击删除元素')
        // 获取图书id(我们动态创建的自定义属性id)
        const theId = e.target.parentNode.dataset.id
        console.log(theId)
        // 3.2 调用删除接口
        axios({
            // 使用模板字符串  路径传参
            url: `http://hmajax.itheima.net/api/books/${theId}`,
            method: 'DELETE'
        }).then(result => {
            // 3.3 刷新图书列表
            getBooksList()
            console.log(result)
        }).catch(error => {
            console.log(error)
            console.log(error.response.data.message)
        })
    }
})


04_编辑图书业务

* 目标4 :编辑图书

* 4.1 编辑弹框 -> 显示和隐藏

* 4.2 获取当前编辑图书数据 -> 回显到编辑表单中

* 4.3 提交保存修改 ,并刷新列表

业务4代码
// 4.1 编辑弹框 -> 显示和隐藏 (使用js方式控制)
const editDom = document.querySelector('.edit-modal')
// 通过bootstrap.Modal构造函数创建一个实例对象
const editModal = new bootstrap.Modal(editDom)
// 给编辑元素 -> 绑定 ->委托事件
document.querySelector('.list').addEventListener('click', e => {
    // 判断点击的是否为 edit 这个类 的标签
    if (e.target.classList.contains('edit')) {
        // console.log('编辑')

        // 4.2 获取当前编辑图书数据 -> 回显到编辑表单中
        const theId = e.target.parentNode.dataset.id
        // console.log(theId)
        axios({
            // 路径传参  嵌入进去
            url: `http://hmajax.itheima.net/api/books/${theId}`,
            method: 'GET',
        }).then(result => {
            const bookObj = result.data.data
            // document.querySelector('.edit-form .bookname').value = bookObj.bookname
            // document.querySelector('.edit-form .author').value = bookObj.author

            // 数据对象“属性”和标签“类名”一致
            // 遍历数据对象,使用属性去获取对应标签,快速赋值
            const keys = Object.keys(bookObj) //['id', 'bookname', 'author', 'publisher']
            keys.forEach(key => {
                document.querySelector(`.edit-form .${key}`).value = bookObj[key]
            })
        })

        // 给弹框对象添加show方法,让编辑框显示出来
        editModal.show()
    }
})

//  修改按钮 -> 点击 -> 隐藏按钮
document.querySelector('.edit-btn').addEventListener('click', () => {
    // 4.3 提交保存修改 ,并刷新列表
    const editForm = document.querySelector('.edit-form')
    const bookObj = serialize(editForm ,{ hash: true ,empty: true })
    // 下面是保存正在编辑的图书id ,隐藏起来:无需让用户修改
    // <input type="hidden" class="id" name="id" value="228500">
    axios({
        url: `http://hmajax.itheima.net/api/books/${bookObj.id}`,
        method: 'PUT',
        data: {
            ...bookObj,
            creator
        }
    }).then(() => {
        // 修改成功以后,重新获取并刷新列表
        getBooksList()
        // 隐藏弹框
        editModal.hide()
    })

})

业务总结
  • 核心的步骤

* 业务1:渲染图书列表

* 1.1 获取数据

* 1.2 渲染数据

业务2:新增图书

​ * 2.1 新增弹框 -> 显示和隐藏

​ * 2.2 收集表单数据,并提交给服务器

​ * 2.3 刷新图书列表、同时重置表单

* 业务3: 删除图书

* 3.1 删除元素绑定点击事件 -> 获取图书id

* 3.2 调用删除接口

* 3.3 刷新图书列表

* 业务4 :编辑图书

  • 显示和隐藏

* 4.2 获取当前编辑图书数据 -> 回显到编辑表单中

* 4.3 提交保存修改 ,并刷新列表

在所有的查询和请求中,只要服务器的数据发生变化,同时也需要渲染刷新页面的内容.文章来源地址https://www.toymoban.com/news/detail-623649.html

到了这里,关于Ajax图书管理业务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(五)—— 项目-新闻头条-数据管理平台-ajax综合案例前端

    愿许秋风知我意,解我心中意难平。 推荐使用, 每个程序员都有自己的管理方式。 HTML结构: 1.为什么要提取公共前缀地址(基地址),因为公司业务可能会更换服务器,如果你不想一条一条地修改请求地址的话。 后续使用axios时,url不需要再写前缀。 2.请求成功与失败 成

    2024年01月25日
    浏览(40)
  • javascript常见100问|前端基础知识|问ajax-fetch-axios-区别请用 XMLHttpRequestfetch 实现 ajax节流和防抖px em rem vw/箭头函数的缺点

    HTML CSS JS HTTP 等基础知识是前端面试的第一步,基础知识不过关将直接被拒。本章将通过多个面试题,讲解前端常考的基础知识面试题,同时复习一些重要的知识点。 扎实的前端基础知识,是作为前端工程师的根本。基础知识能保证最基本的使用,即招聘进来能干活,能产出

    2024年04月27日
    浏览(39)
  • 什么是AJAX?如何使用原生JavaScript搭建AJAX请求?

    前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而又亲切的学习平台。在这个

    2024年02月11日
    浏览(30)
  • 什么是AJAX?如何使用原生JavaScript进行AJAX请求?

    前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而又亲切的学习平台。在这个

    2024年02月07日
    浏览(29)
  • JavaScript--AJAX

    目录 概述 XMLHttpRequest对象  方法和属性 示例一: 示例二: 传统的web交互是用户触发一个http请求服务器,然后服务器收到之后,在做出响应到用户,并且返回一个新的页面,每当服务器处理客户端提交的请求时,客户都只能空闲等待,并且哪怕只是一次很小的交互、只需从服务

    2024年02月14日
    浏览(28)
  • javascript的ajax

    JavaScript的AJAX(Asynchronous JavaScript and XML)处理是一种用于在后台与服务器进行异步数据交互的技术。它允许你在不刷新整个页面的情况下,通过JavaScript发送HTTP请求,并异步获取服务器返回的数据。 AJAX的实现通常涉及以下几个核心组件和步骤: 创建XMLHttpRequest对象(XHR):

    2024年02月12日
    浏览(47)
  • JavaScript全解析——Ajax(上)

    ●认识前后端交互 ○就是 前端 与 后端的 一种通讯方式 ○主要使用的技术栈就是 ajax (async javascript and xml) ●ajax 特点 ○使用 ajax 技术网页应用能够快速的将新内容呈现在用户界面 ○并且不需要刷新整个页面, 也就是能够让页面有 \\\"无刷更新\\\" 的效果 ●注意点: ○前后端交互只

    2024年02月08日
    浏览(91)
  • 【Javascript】ajax(阿甲克斯)

    目录 什么是ajax? 同步与异步 原理 注意 写一个ajax请求  创建ajax对象 设置请求方式和地址 发送请求 设置响应HTTP请求状态变化的函数 是基于javascript的一种用于创建快速动态网页的技术,是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术,主要用来在前端页

    2024年02月06日
    浏览(40)
  • JavaScript全解析——Ajax是什么(上)

    AJAX 是 Asynchronous JavaScript And XML 的缩写。 它不是一种编程语言。它是一种基于 HTML、CSS、JavaScript 和 XML ,让开发更好、更快和更有互动的 Web 应用的技术。 前后端交互就是前端与后端的一种通讯方式,主要使用的技术栈就是 ajax (async javascript and xml 使用 ajax 技术网页应用能够

    2024年02月05日
    浏览(34)
  • javascript二维数组(21)执行异步HTTP(Ajax)请求的方法($.get、$.post、$getJSON、$ajax)

    . g e t 、 .get、 . g e t 、 .post、 g e t J S O N 、 getJSON、 g e t J SON 、 ajax都是jQuery提供的用于执行异步HTTP(Ajax)请求的方法。每个方法都有其特定的用途和区别。 . g e t :这个方法使用 G E T 方式来进行异步请求。其语法结构为: .get:这个方法使用GET方式来进行异步请求。其语

    2024年02月07日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包