美文网首页Java基础Web前端知识
使用Bootstrap重构学生管理系统界面(了解)

使用Bootstrap重构学生管理系统界面(了解)

作者: 测试老杨 | 来源:发表于2019-06-15 14:38 被阅读704次

    Bootstrap介绍

    Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob Thornton合作基于HTML、CSS、JavaScript 开发的简洁、直观、强悍的前端开发框架,使得 Web 开发更加快捷。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言Less写成。Bootstrap中包含了丰富的Web组件,根据这些组件,可以快速的搭建一个漂亮、功能完备的网站。其中包括以下组件:下拉菜单、按钮组、按钮下拉菜单、导航、导航条、路径导航、分页、排版、缩略图、警告对话框、进度条、媒体对象等。

    我对Bootstrap的理解

    1)Bootstrap框架通过标签选择器(元素选择器)绑定样式相关的代码(比如:我们发现引入了Bootstrap后,界面上的链接是没有下划线的)
    2)Bootstrap框架通过类选择器,id选择器,组合选择器(由基本选择器组成)绑定处理样式的css代码和js代码,我们可以给元素设置class和id,这样的话,处理样式的代码就能够对这些元素真正生效。

    思路

    1)重构index页面
    2)修改js脚本里面的list函数
    3)修改js脚本里面的add函数
    4)修改js脚本里面的edit函数
    5)修改js脚本里面的save函数

    image.png image.png image.png

    项目地址

    https://github.com/yangzc23/stuwebNG

    image.png

    遇到的问题

    问题描述:
    保存操作的ajax请求状态为canceled

    image.png

    原因分析:
    URL地址发生变化,浏览器将该ajax请求取消

    解决方法:
    把保存和取消的按钮放到表单外面

    image.png

    重构index页面

    修改后的代码如下:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>学生管理系统</title>
    <link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.min.css"/>
    <link rel="stylesheet" type="text/css" href="bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css"/>
    <script src="js/jquery.min.js"></script>
    <script src="bootstrap/js/bootstrap.min.js" type="text/javascript" charset="utf-8"></script>
    <script src="bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js" type="text/javascript" charset="utf-8"></script>
    <script src="bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js" type="text/javascript" charset="utf-8"></script>
    <script src="js/student.js"></script>
    <script type="text/javascript">
        $(function(){
            $('.form_date').datetimepicker({
              language: 'zh-CN',
              weekStart: 1,
              todayBtn: 1,
              autoclose: 1,
              todayHighlight: 1,
              startView: 2,
              minView: 2,
              forceParse: 0,
             });
        })
    </script>
    <style>
    #menu{
        margin:10px;
    }
    </style>
    </head>
    <body onload="list();" class="bg-info">
    <!--导航层-->
    <div>
        <!--菜单列表-->
        <ul class="nav nav-pills nav-justified">
            <li role="presentation" class="active"><a href="javascript:void(0);">学生基本信息管理</a></li>
            <li role="presentation"><a href="javascript:void(0);">学生档案</a></li>
            <li role="presentation"><a href="javascript:void(0);">学生就业情况</a></li>
        </ul>   
    </div>
    <div>
    <div id="list" class="panel panel-default"></div>
    <div id="menu">
    <button type="button" class="btn btn-primary" onclick="add();">
      <span class="glyphicon glyphicon-plus" aria-hidden="true"></span> 添加
    </button>
    </div>
    <!-- 模态框(Modal) -->
    <div class="modal fade" id="edit" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                    <h3 class="modal-title" id="subject"></h3>
                </div>
                <div class="modal-body">
                    <form role="form" id="register">
                        <div class="form-group" id="first">
                            <label for="sid">学号</label> <input type="text"
                                class="form-control" id="sid" name="sid" readonly>
                        </div>
                        <div class="form-group">
                            <label for="sname">姓名</label> <input type="text"
                                class="form-control" id="sname" name="sname" placeholder="请输入姓名">
                        </div>
                        <label for="name">性別</label>
                        <div class="form-group">
                            <label class="radio-inline">
                                <input type="radio" name="gender" id="male" value="1" checked> 靓仔
                            </label>
                            <label class="radio-inline">
                                <input type="radio" name="gender" id="female" value="0"> 美女
                            </label>
                        </div>
                        <div class="form-group">
                        <label for="birth">生日</label>
                        <div class="input-group date form_date" data-date="" data-date-format="yyyy MM dd" data-link-field="birth" data-link-format="yyyy-mm-dd">                       
                            <input name="birth" id="birth" class="form-control" type="text" value="" readonly>
                            <span class="input-group-addon">
                                <span class="glyphicon glyphicon-remove"></span>
                            </span>
                            <span class="input-group-addon">
                                <span class="glyphicon glyphicon-calendar"></span>
                            </span>
                        </div>
                        </div>      
                        <div class="form-group">
                            <label for="photo">上传头像</label>
                            <input type="file" id="photo" name="photo">
                            <p class="help-block">请上传jpg或者png格式的文件!</p>
                        </div>
                        <div class="form-group">
                            <button type="button" class="btn btn-default" onclick="upload();">
                                <span class="glyphicon glyphicon-upload" aria-hidden="true"></span> 上传
                            </button>
                        </div>
                        <div hidden="hidden">
                            <input type="text" name="filePath" id="filePath" value="images/default.png"/>
                        </div>
                        <div class="form-group">
                            <img width="120" height="120" src="images/default.png" id="photo2"/>
                        </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" onclick="save();">保存</button>
                </div>
            </div><!-- /.modal-content -->
        </div><!-- /.modal-dialog -->
    </div><!-- /.modal -->
    <script>
    $(function() {
        $('#edit').modal('hide');
    });
    </script>
    </div>
    </body>
    </html>
    

    修改JS脚本里面的list函数

    修改后的list函数代码如下:

    function list(){
        $.ajax({
            type: "get",
            url: "welcome",
            cache: false,
            async: true,
            dataType: "json",
            success: function(data){
                var html = "<div class=\"panel-heading\"><h3 class=\"panel-title\">学生列表</h3></div>";
                html += "<div><p></p></div>";
                html += "<table class=\"table table-hover\">";
                html += "<tr><th>学号</th><th>姓名</th><th>性别</th><th>生日</th><th>操作</th></tr>";
                $.each(data.data,function(index,obj){
                    html += "<tr><td>"+obj.sno+"</td><td>"+obj.sname+
                    "</td><td>"+obj.isMale+"</td><td>"+obj.birth+"</td><td>"+
                    "<a href=\"javascript:void(0)\" onclick=\"detail(this);\">详情</a>&nbsp;"+
                    "<a href=\"javascript:void(0)\" onclick=\"edit(this);\">编辑</a>&nbsp;"+
                    "<a href=\"javascript:void(0)\" onclick=\"del(this);\">删除</a>"+             
                    "</td></tr>";
                });
                html += "</table>";
                //console.log(html);
                $("#list").html(html);
            }
        });
    }
    

    修改JS函数里面的add函数

    修改后的add函数代码如下:

    function add(){
        $("#subject").text("注册学生信息");
        $("#first").hide();
        $("#register")[0].reset();
        $("#photo2").attr("src","images/default.png");
        //$("#edit").css("display","block");
        $('.form_date').datetimepicker("setDate", new Date()); 
        $('#edit').modal('show');
    }
    

    修改JS函数里面的edit函数

    修改后的edit函数代码如下:

    function edit(e){
        $("#register")[0].reset();              
        $("#subject").text("修改学生信息");
        $("#first").show();
        $("#photo2").attr("src","images/default.png");
        var sid = $(e).parent().siblings().first().text();
        //alert(sid);
        $.ajax({
            //几个参数需要注意一下
            type: "GET",//方法类型
            dataType: "json",//预期服务器返回的数据类型
            url: "edit?sid="+sid ,//url
            success: function (data) {
                //console.log(data);//打印服务端返回的数据(调试用)
                if (data.result == "success") {
                    var stu = data.data;
                    $("#sid").val(stu.sno);
                    $("#sname").val(stu.sname);
                    if(stu.isMale){
                        $("#male").prop("checked",true);
                    }else{
                        $("#female").prop("checked",true);
                    }
                    $("#birth").val(stu.birth);
                    $("#filePath").val(stu.filePath);
                    $("#photo2").attr("src",stu.filePath);
                    $('#edit').modal('show');
                }
            },
            error : function() {
                alert("异常!");
            }
        });
    }
    

    修改JS函数里面的save函数

    修改后的save函数代码如下:

    function save(){
        $.ajax({
                //几个参数需要注意一下
                type: "post",//方法类型
                dataType: "json",//预期服务器返回的数据类型
                url: "save" ,//url
                data: $("#register").serialize(),
                success: function (data) {
                    //console.log(data);//打印服务端返回的数据(调试用)
                    if (data.result == "success") {
                        $('#edit').modal('hide');
                        //$("#edit").css("display","none");
                        //$("#register")[0].reset();
                        //$("#photo2").attr("src","images/default.png");
                        //alert(data.message);
                        list();
                    }
                },
                error : function() {
                    alert("异常!");
                }
            });
    }
    

    参考资料

    [01] Bootstrap下载及使用
    https://v3.bootcss.com/getting-started/
    [02] Bootstrap组件
    https://v3.bootcss.com/components/
    [03] 导航
    https://v3.bootcss.com/components/#nav
    [04] Glyphicons 字体图标
    https://v3.bootcss.com/components/#glyphicons
    [05] Bootstrap徽章
    https://v3.bootcss.com/components/#badges
    [06] Bootstrap表单
    https://www.jianshu.com/p/ffbc36965840
    [07] Bootstrap教程
    https://www.runoob.com/bootstrap/bootstrap-tutorial.html
    [08] 解决ajax请求状态为canceled问题
    https://www.jianshu.com/p/719c2a2da406
    [09] Bootstrap模态框
    https://www.runoob.com/bootstrap/bootstrap-modal-plugin.html
    [10] Bootstrap日期和时间表单组件
    https://www.bootcss.com/p/bootstrap-datetimepicker
    [11] bootstrap3使用bootstrap datetimepicker日期插件
    https://www.jb51.net/article/114598.htm
    [12] bootstrap-datetimepicker 初始值
    https://blog.csdn.net/shenwb110/article/details/81386523

    微信扫一扫关注该公众号【测试开发者部落】

    image.png
    点击链接加入群聊【软件测试学习交流群】
    https://jq.qq.com/?_wv=1027&k=5eVEhfN
    软件测试学习交流QQ群号:511619105

    相关文章

      网友评论

        本文标题:使用Bootstrap重构学生管理系统界面(了解)

        本文链接:https://www.haomeiwen.com/subject/gsjbfctx.html