ajax--英雄信息管理

135 阅读2分钟

html代码

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>我们的69-英雄管理</title>
  <link rel="stylesheet" href="./libs/bootstrap/css/bootstrap.min.css" />
  <style>
    .panel {
      width: 900px;
      margin: 10px auto;
    }

    .table img {
      width: 40px;
      height: 40px;
    }
  </style>
</head>

<body>
  <div class="container">
    <div class="panel panel-primary">
      <div class="panel-heading">英雄列表管理</div>
      <div class="panel-body">
        <div class="row">
          <div class="col-lg-6">
            <div class="input-group">
              <input type="text" id="hname" class="form-control" placeholder="输入英雄信息..." autocomplete="true" />
              <span class="input-group-btn">
                <button class="btn btn-default" id="btn_search" type="button">
                  搜索
                </button>
              </span>
            </div>
          </div>

          <div class="col-lg-3 col-lg-offset-3">
            <!-- data-toggle:这个控制元素控制的是模态框的显示和隐藏 -->
            <!-- data-target:指定当前按钮所控制的模态框是那一个,通过id对应 -->
            <button type="button" class="btn btn-success openDialog" data-toggle="modal" data-target="#addHeroModal">
              添加英雄
            </button>
          </div>
        </div>
      </div>

      <table class="table">
        <thead>
          <tr>
            <th>编号</th>
            <th>英雄名称</th>
            <th>英雄性别</th>
            <th>头像</th>
            <th>操作区</th>
          </tr>
        </thead>
        <!-- 表格主体 -->
        <tbody id="tbody">
          <tr>
            <td>1</td>
            <td>73期小伙伴</td>
            <td>男/女</td>
            <td>
              <img src="https://img1.baidu.com/it/u=1146390613,1184997859&fm=26&fmt=auto" alt="" />
            </td>
            <td>
              <button type="button" class="btn btn-info">
                上传头像
              </button>
              <button type="button" class="btn btn-warning">
                删除
              </button>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>
  <!-- 新增英雄模态框 -->
  <div class="modal fade" id="addHeroModal" tabindex="-1" role="dialog">
    <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">添加英雄</h4>
        </div>
        <div class="modal-body">
          <form class="form-horizontal">
            <div class="form-group">
              <label for="heroname" class="col-sm-2 control-label">英雄名称</label>
              <div class="col-sm-10">
                <input type="text" class="form-control" id="heroname" placeholder="请输入英雄名称" />
              </div>
            </div>
            <div class="form-group">
              <label for="gender" class="col-sm-2 control-label">英雄性别</label>
              <div class="col-sm-10">
                <select class="form-control" id="gender">
                  <option></option>
                  <option></option>
                </select>
              </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-success btnAdd">确定</button>
        </div>
      </div>
    </div>
  </div>
  <!-- 上传文件的模态框 -->
  <div class="modal fade" id="uploadImgModal" 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">
          <input type="file" id="heroImg" />
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">
            取消
          </button>
          <button type="button" class="btn btn-primary btnHeroEdit">
            确定
          </button>
        </div>
      </div>
    </div>
  </div>

  <script src="./libs/axios.js"></script>
  <script src="./libs/jquery/jquery.js"></script>
  <script src="./libs/bootstrap/js/bootstrap.js"></script>

  <!-- 引入页面js -->
  <script src="./js/index.js"></script>
</body>

</html>

js代码

window.onload = function () {
    //获取去注册,自定义类名goRegister
    let goRegister = document.querySelector('.goRegister')
    //获取去登陆,自定义类名goLogin
    let goLogin = document.querySelector('.goLogin')
    //获取登陆按钮
    let login = document.querySelector('.login')
    //获取注册按钮
    let register = document.querySelector('.register')
    //校验规则
    // 比如,验证一个用户名和密码
    function test() {
        return {
            fields: {
                username: { // 这里username是 input 的name属性值,表示对这个输入框进行验证
                    validators: {
                        //添加真正的校验规则
                        notEmpty: {   //不能为空
                            message: '用户名不能为空.'
                        },
                        stringLength: {   //检测长度
                            min: 2,
                            max: 15,
                            message: '用户名需要2~15个字符'
                        }
                    }
                },
                password: {
                    validators: {
                        notEmpty: {
                            message: '密码不能为空'
                        },
                        stringLength: {   //检测长度
                            min: 6,
                            max: 15,
                            message: '密码需要6~15个字符'
                        }
                    }
                }
            }
        }
    }

    goRegister.addEventListener('click', function () {
        //点击去注册,登录页面隐藏,注册页面显示
        login.style.display = 'none'
        register.style.display = 'block'
    })
    goLogin.addEventListener('click', function () {
        //点击去登录,注册页面隐藏,登录页面显示
        login.style.display = 'block'
        register.style.display = 'none'
    })

    //单机实现注册,比如注册
    $('.register form').bootstrapValidator(test()).on('success.form.bv', function (e) {
        e.preventDefault();
        // 通过验证,这里的代码将会执行。我们将Ajax请求的代码放到这里即可
        // toastr.success('注册成功')

        //获取数据
        let username = register.querySelector('[name="username"]').value
        let password = register.querySelector('[name="password"]').value
        //发请求
        axios({
            method: 'post',
            url: '/api/register',
            data: `username=${username}&password=${password}`
            // data: { username, password }
        }).then(res => {
            if (res.data.code == 0) {
                toastr.success(res.data.message)
                login.style.display = 'block'
                register.style.display = 'none'
            } else {
                toastr.warning(res.data.message)
            }
        })
    })


    //单机实现登陆
    $('.login form').bootstrapValidator(test()).on('success.form.bv', function (e) {
        e.preventDefault();
        // 通过验证,这里的代码将会执行。我们将Ajax请求的代码放到这里即可

        //获取数据
        let username = login.querySelector('[name="username"]').value
        let password = login.querySelector('[name="password"]').value

        //发请求
        axios({
            method: 'post',
            url: '/api/login',
            // data: `username=${username}&password=${password}`
            data: { username, password }
        }).then(res => {
            if (res.data.code == 0) {
                toastr.success(res.data.message)
                //本地存储token
                localStorage.setItem('mytoken_73', res.data.token)
                //登陆成功,实现页面的跳转
                location.href = './index.html'
            } else {
                toastr.warning(res.data.message)
            }
        })
    });
}

说明:

  • 01-点击搜索,输入要搜索的英雄名称,下面会出现相对应的值
  • 02-点击添加,会弹出提示框
  • 03-点击上传头像,弹出选择文件提示框,点击确定选择头像,将头像上传
  • 04-点击删除,删除该条英雄的信息

加载

image.png

搜索

image.png

添加

image.png

上传头像

image.png

删除

image.png