首页 > 其他分享 >Ajax图书列表

Ajax图书列表

时间:2022-09-30 09:33:22浏览次数:48  
标签:function val 列表 获取 Ajax 添加 id 图书

** vscode、bootstrap.css、jquery.js以及插件Bootstrap 3 Snippets。**
首先是布局部分,就不多说了,直接上代码:

<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> <script src="./jquery.js"></script> <link rel="stylesheet" href="./bootstrap.css"> </head>
<div class="panel panel-primary">
    <div class="panel-heading">
        <h3 class="panel-title">添加图书</h3>
    </div>
    <div class="panel-body form-inline">

        <div class="input-group">
            <div class="input-group-addon">书名</div>
            <input type="text" class="form-control" id="bookname" placeholder="请输入书名">
        </div>
        <div class="input-group">
            <div class="input-group-addon">作者</div>
            <input type="text" class="form-control" id="author" placeholder="请输入作者">
        </div>
        <div class="input-group">
            <div class="input-group-addon">出版社</div>
            <input type="text" class="form-control" id="place" placeholder="请输入出版社">
        </div>
        <button id="addbtn" class="btn btn-primary">添加</button>
    </div>
</div>

<!-- 添加图书的表格 -->

<table class="table table-bordered table-hover">
    <thead>
        <tr>
            <th>id</th>
            <th>书名</th>
            <th>作者</th>
            <th>出版社</th>
            <th>操作</th>

        </tr>
    </thead>
    <tbody id="tb">
        <tr>
            <td></td>
        </tr>
    </tbody>
</table>

需要实现的功能有:
1.获取并渲染图书列表的数据

2.实现删除图书的功能

3.实现添加图书的功能

功能一实现思路:首先采用$.get()请求接口数据,判断状态码是否是200,不是则获取失败,然后创一个空数组用来存表格中的每一行,循环获取过来的数组对象,得到添加的html内容,然后清空tbody中的内容并将html内容添加到tbody中。

功能二实现思路:首先获取想要删除的id,然后通过$.get()请求接口来删除数据,判断状态码是否是200,不是则删除失败,如果成功就重新刷新页面渲染最新的数据。

功能三实现思路:给添加按钮添加点击事件,获取书名、作者、出版社,然后判断用户输入的内容是否包含空,再采用$.post()请求接口提交数据,判断状态码是否为201,不是则提交失败,如果成功就重新刷新页面渲染最新数据,然后把文本框中输入的内容清空。
最终完整代码如下:

<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> <script src="./jquery.js"></script> <link rel="stylesheet" href="./bootstrap.css"> </head>
<div class="panel panel-primary">
    <div class="panel-heading">
        <h3 class="panel-title">添加图书</h3>
    </div>
    <div class="panel-body form-inline">

        <div class="input-group">
            <div class="input-group-addon">书名</div>
            <input type="text" class="form-control" id="bookname" placeholder="请输入书名">
        </div>
        <div class="input-group">
            <div class="input-group-addon">作者</div>
            <input type="text" class="form-control" id="author" placeholder="请输入作者">
        </div>
        <div class="input-group">
            <div class="input-group-addon">出版社</div>
            <input type="text" class="form-control" id="place" placeholder="请输入出版社">
        </div>
        <button id="addbtn" class="btn btn-primary">添加</button>
    </div>
</div>

<!-- 添加图书的表格 -->

<table class="table table-bordered table-hover">
    <thead>
        <tr>
            <th>id</th>
            <th>书名</th>
            <th>作者</th>
            <th>出版社</th>
            <th>操作</th>

        </tr>
    </thead>
    <tbody id="tb">
        <tr>
            <td></td>
        </tr>
    </tbody>
</table>
<script>
    $(function() {
        // 获取并渲染图书列表
        function getbooklist() {
            $.get('http://www.liulongbin.top:3006/api/getbooks', function(res) {
                // 判断状态码是否是200,不是200则获取失败
                if (res.status != 200) {
                    return alert('获取数据失败!')
                }
                // 创一个数组用来存表格中的一行
                var row = [];
                // 循环对象数组
                $.each(res.data, function(index, val) {
                        // console.log(val);
                        row.push('<tr><td>' + val.id + '</td> <td>' + val.bookname + '</td><td>' + val.author + '</td><td>' + val.publisher + '</td><td><a href="javascript:;" class="del" data-id="' + val.id + '">删除</a></td></tr>')
                    })
                    // 首先清空tbody里面的内容
                $('#tb').empty().append(row.join(''));
            })
        }
        getbooklist();
        // 删除某一行
        // 通过代理的方式,为动态添加的元素绑定点击事件
        $('#tb').on('click', '.del', function() {
                // 获取要删除的id
                var id = $(this).attr('data-id');
                // 进行删除操作
                $.get('http://www.liulongbin.top:3006/api/delbook', {
                    id: id
                }, function(res) {
                    if (res.status != 200) {
                        return alert('删除失败');
                    }
                    // 如果成功就重新刷新页面
                    getbooklist();
                })
            })
            // 添加图书
        $('#addbtn').on('click', function() {
            // 获取书名
            var bookname = $('#bookname').val().trim();
            // 获取作者
            var author = $('#author').val().trim();
            // 获取出版社
            var place = $('#place').val().trim();
            // 判断用户输入的内容是否为空
            // 注意这里要考虑到只输入空格的情况
            if (bookname.length <= 0 || author.length <= 0 || place.length <= 0) {
                return alert('请输入完整的图书信息');
            }
            // 提交数据
            $.post('http://www.liulongbin.top:3006/api/addbook', {
                bookname: bookname,
                author: author,
                publisher: place
            }, function(res) {
                // 判断是否提交成功
                if (res.status != 201) {
                    return alert('添加图书失败')
                }
                // 如果成功就重新刷新页面
                getbooklist();
                // 然后把文本框中的值设置为空
                var bookname = $('#bookname').val('');
                var author = $('#author').val('');
                var place = $('#place').val('');


            })



        })
    })


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

标签:function,val,列表,获取,Ajax,添加,id,图书
From: https://www.cnblogs.com/yxn001/p/16743803.html

相关文章

  • 带线的无限级下拉树列表
    好多年没写文章了这里就分享点自己原创的一点破代码,效果如图下:本人的提供的代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.We......
  • python如何依次打印出列表中的元素
    list1=[]forjinrange(1,100):list1.append(j)list2=[]sum1=int(input("输入一个数字:"))#定义一个int类型i=0while(i<=len(list1)):#对输入......
  • Ajax 知识点汇集
    url地址组成客户端和服务器之间的通信协议服务器名称具体的存放位置 客户端与服务器的通信过程(三个步骤):请求、处理、响应使用开发者工具->network:查看......
  • 列表内置方法及操作
    列表内置方法及操作一、类型转换list(其他数据类型)把其他数据类型转成列表print(type(list('123')),list('123'))#<class'list'>['1','2','3']print(type(l......
  • 列表内置方法及操作
    今日内容数据类型的内置方法理论我们之前所学习的每一种数据类型本身都含有一些列的操作方法内置方法是其中最多的(自带功能)在python中数据类型调用内置方法的同意句......
  • $.ajax()传递请求参数
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"conten......
  • python实现找到列表中第二大的数字
    '''给定一个长度大于3的列表,里面数字是无序的,且数字不重复,如何找到第二大的数字?例如列表a=[1,3,6,2,7,9],找到的结果就应该是:7下面给出六种解决方案'''a=[1,3,6......
  • Ajax、反向Ajax和WebSocket 概念
    Ajax异步的JavaScript和XML(AsynchronousJavaScriptandXML,Ajax),一种可通过JavaScript来访问的浏览器功能特性,其允许脚本向幕后的网站发送一个HTTP请求而又无需重新加载......
  • 前端面试总结11-WebApi-Ajax
    1.同源策略:ajax请求时,浏览器要求当前网页和serve必须同源(安全),即协议,域名,端口三者必须一致2.可无视同源策略的情况(1:<img/>可用于统计打点,可使用第三方统计服务(2:<link/><......
  • Vue 超长列表渲染性能优化
    参考:https://juejin.cn/post/6979865534166728711#heading-3组件懒加载参考:https://github.com/xunleif2e/vue-lazy-component......