ajax--图书管理(加载,添加,删除,编辑)

134 阅读1分钟

结构部分

<body>

  <!-- 栅格系统 -->
  <div class="container-fluid">
    <button class="btn-success loadBook">加载图书数据</button>
    <!-- 栅格系统中的一行 -->
    <div class="row">
      <div class="col-sm-8">
        <table class="table table-bordered table-striped table-dark table-hover text-center">
          <thead>
            <!-- 表头行 -->
            <tr>
              <th scope="col">Id</th>
              <th scope="col">书名</th>
              <th scope="col">作者</th>
              <th scope="col">出版社</th>
              <th scope="col">操作</th>
            </tr>
          </thead>
          <tbody>

            <!--  <tr>
              <th scope="row">xxx</th>
              <td>xxx</td>
              <td>xxx</td>
              <td>xxx</td>
              <td>
                <button type="button" class="btn btn-link btn-sm ">
                  删除
                </button>
                <button type="button" class="btn btn-link btn-sm ">
                  编辑
                </button>
              </td>
            </tr> -->
          </tbody>
        </table>
      </div>
    </div>
  </div>

  <!-- 右侧的添加区域,占了 4 列 -->
  <div class="col-sm-4">
    <!-- 添加图书的卡片 -->
    <div class="card text-white bg-secondary sticky-top">
      <div class="card-header">添加新图书</div>
      <form class="card-body bg-light" id="addForm">
        <!-- 书名 -->
        <div class="input-group mb-3">
          <div class="input-group-prepend">
            <span class="input-group-text">书名</span>
          </div>
          <input type="text" class="form-control" placeholder="请输入图书名称" name="bookname">
        </div>
        <!-- 作者 -->
        <div class="input-group mb-3">
          <div class="input-group-prepend">
            <span class="input-group-text">作者</span>
          </div>
          <input type="text" class="form-control" placeholder="请输入作者名字" name="author">
        </div>
        <!-- 出版社 -->
        <div class="input-group mb-3">
          <div class="input-group-prepend">
            <span class="input-group-text">出版社</span>
          </div>
          <input type="text" class="form-control" placeholder="请输入出版社名称" name="publisher">
        </div>
        <!-- 添加按钮 -->
        <button class="btn btn-dark btnadd" type="submit">添加</button>
      </form>
    </div>
  </div>
  </div>
  </div>


  <!-- 模态框 -->
  <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
    <div class="modal-dialog" role="document">
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
              aria-hidden="true">&times;</span></button>
          <h4 class="modal-title" id="myModalLabel">编辑图书</h4>
        </div>
        <div class="modal-body">
          <form>
            <div class="form-group row">
              <label for="bookname" class="col-sm-2 col-form-label">书名</label>
              <div class="col-sm-10">
                <input type="text" class="form-control" id="bookname" placeholder="请输入书名" />
              </div>
            </div>
            <div class="form-group row">
              <label for="author" class="col-sm-2 col-form-label">作者</label>
              <div class="col-sm-10">
                <input type="text" class="form-control" id="author" placeholder="请输入作者" />
              </div>
            </div>
            <div class="form-group row">
              <label for="publisher" class="col-sm-2 col-form-label">出版商</label>
              <div class="col-sm-10">
                <input type="text" class="form-control" id="publisher" placeholder="请输入出版商" />
              </div>
            </div>
          </form>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
          <button type="button" class="btn btn-primary btnConfirm">确定</button>
        </div>
      </div>
    </div>
  </div>

js部分

<script>
    let loadBook = document.querySelector('.loadBook')
    let tbody = document.querySelector('tbody')
    let btnadd = document.querySelector('.btnadd')
    let bookname = document.querySelector('[name="bookname"]')
    let author = document.querySelector('[name="author"]')
    let publisher = document.querySelector('[name="publisher"]')
    let btndel = document.querySelector('.btndel')
    let btnedit = document.querySelector('.btnedit')
    let editbookname = document.querySelector('#bookname')
    let editauthor = document.querySelector('#author')
    let editpublisher = document.querySelector('#publisher')
    let btnConfirm = document.querySelector('.btnConfirm')



    //1.加载图书
    loadBook.addEventListener('click', function () {
      init()
    })

    //2.添加图书
    btnadd.addEventListener('click', function (e) {
      e.preventDefault()
      axios({
        url: 'http://www.itcbc.com:3006/api/addbook',
        method: 'post',
        data: {
          bookname: bookname.value,
          author: author.value,
          publisher: publisher.value
        }
      }).then(result => {
        alert(result.data.message)
        init()
      })
    })

    //3.删除图书
    tbody.addEventListener('click', function (e) {
      if (e.target.classList.contains('btndel')) {
        if (confirm('真的要删除吗')) {
          let id = e.target.dataset.id
          axios({
            url: 'http://www.itcbc.com:3006/api/delbook',
            method: 'delete',
            params: {
              id,
            }
          }).then(res => {
            console.log(res);
            if (res.data.status == 0) {
              alert(res.data.message)
              init()
            } else {
              alert('删除图书失败')
            }
          })
        }
      }
    })

    function init() {
      axios({
        url: 'http://www.itcbc.com:3006/api/getbooks',
        method: 'get'
      }).then((result) => {
        console.log(result);
        let list = result.data.data
        let str = ''
        list.forEach(function (value, index) {
          str += `<tr>
                    <th scope="row">${index + 1}</th>
                    <td>${value.bookname}</td>
                    <td>${value.author}</td>
                    <td>${value.publisher}</td>
                    <td>
                      <button type="button" class="btn btn-link btn-sm btndel" data-id='${value.id}'>
                        删除
                      </button>
                      <button type="button" class="btn btn-link btn-sm btnedit" data-bookname='${value.bookname}'data-author='${value.author}' data-publisher='${value.publisher}' data-id='${value.id}'>
                        编辑
                      </button>
                    </td>
                  </tr>`
        })
        tbody.innerHTML = str
      })
    }

    //4.编辑图书
    let id
    tbody.addEventListener('click', function (e) {
      if (e.target.classList.contains('btnedit')) {
        let data = e.target.dataset
        id = data.id
        $('#myModal').modal('show')
        editbookname.value = data.bookname
        editauthor.value = data.author
        editpublisher.value = data.publisher
      }
    })

    btnConfirm.addEventListener('click', function () {
      let data = {
        id: id,
        bookname: editbookname.value,
        author: editauthor.value,
        publisher: editpublisher.value
      }
      axios({
        url: 'http://www.itcbc.com:3006/api/updatebook',
        method: 'put',
        data
      }).then(res => {
        // console.log(res);
        if (res.data.status == 0) {
          alert(res.data.message)
          bookname.value = author.value = publisher.value = ''
          $('#myModal').modal('hide')
          init()
        } else {
          alert('编辑图书失败')
        }
      })
    })
  </script>

加载图书 image.png 添加图书

image.png 删除图书,删除西游记

image.png 编辑图书,编辑百里守约,将李狗蛋改成王者荣耀

image.png

image.png