zoukankan      html  css  js  c++  java
  • JS快速完成数据库数据显示

    在写项目的过程中遇到问题时应该怎么做?

      - 搜现成模块

      - 上网查找模块的基本使用,找文档

      - 看源码

           - stackoverflow上查找

    主要实现:增删改查组件(JS)

    内容详情:

      服务器列表:两种方法

          - 获取数据,模板语言渲染

          - js获取数据,js动态创建table标签(采用)

            方法:通过ajax向从后端获得数据

            

    <div class="container">
        <h1>服务器列表</h1>
        <table class="table table-bordered">
            <thead id="tHead">
                <tr></tr>
            </thead>
            <tbody id="tBody"></tbody>
        </table>
    </div>

    /*  向后端获取数据  */
    function init() {
    $.ajax({
    url:requestUrl,
    type:"GET",
    data:{},
    success:function (response) {
    /* 处理表头 */
    initTableHead(response.table_config);
            /*  处理显示内容 */
                initTableBody(response.data_list,response.table_config);

    $('.loading').addClass('hide'); //当数据显示出来,隐藏加载图片
    },
    error:function () {
    $('.loading').addClass('hide');
    }
    })
    }
     

      功能:

          订制表头:function  initTableHead(table_config)

              

        //定制表头
        function initTableHead(table_config) {
            $('#tHead tr').empty();
            $.each(table_config,function (index,val) {
                var th = $("<th>");
                th.html(val.title);
                $('#tHead tr').append(th);
            })
        }

          订制显示内容:function initTableBody(table_config,data_list)

              - 知识点:1  字符串格式化

                     2  自定义规则 : @

        //定制表体
        function initTableBody(data_list,table_config) {
            $.each(data_list,function (k,row_dict) {
                var tr = $('<tr>');
                $.each(table_config,function (kk,vv) {
                    var td = $('<td>');
                    var format_dict = {};
                    $.each(vv.text.kwargs,function (kkk,vvv) {
                        if (vvv[0] === '@'){
                            var name = vvv.substring(1,vvv.length);
                            format_dict[kkk] = row_dict[name]; // 自定义规则:以@开头的,去数据库中取数据.
                        }else {
                            format_dict[kkk] = vvv;
                        }
                    });
                    td.html(vv.text.tp1.format(format_dict)); // 字符串格式化后加到td标签中
                    tr.append(td);
                });
                $('#tBody').append(tr);
            })
        }

          加载框:图片放到static中,配置静态文件,注意一般不使用STATIC_ROOT

            STATICFILES_DIRS = [
             os.path.join(BASE_DIR,'static'),
            ]
         
        <div class="loading">
            <div class="img"></div>
        </div>
    <style>
    .loading{
    position: fixed;
    top:0;
    left:0;
    right: 0;
    bottom: 0;
    background-color: black;
    opacity: 0.4;
    z-index: 1000; // 设置元素的堆叠顺序,值越大越在前面。
    }
    .loading .img{
    height: 32px;
    32px;
    background: url("{% static 'images/loading.gif' %}");
    position: fixed;
    top:50%;
    left: 50%;
    margin-top: -16px;
    margin-left: -16px;
    z-index: 10001;
    }
    .hide{
    display: none;
    }
    </style>
      用在什么地方?
        当从后端取数据比较慢时,在这期间可以加上加载的图片。当数据加载出来,就隐藏加载图片。

        

        前端JS整合:

          涉及的知识点:

            - 自执行函数【让我们定义的函数名不和其他的函数名冲突】

            

    (function(args){
         alert(args)
    })(666)

            - jQuery扩展【在函数内部可以执行程序】

    $.extend({
    
          "xxxx": function(args){
               alert(args)
        }
    
    })    
    
    
    $.xxxx(6666)

            - js 中的作用域:首先在当前作用域找,再上层

      最后整合的信息快速显示的组件为:

      

    (function (jq) {
    
        var requestUrl = '';
    
        String.prototype.format = function (args) {
            return this.replace(/{(w+)}/g, function (s, i) {
                return args[i];
            });
        };
    
        /*  向后端获取数据  */
        function init() {
            $.ajax({
                url:requestUrl,
                type:"GET",
                data:{},
                success:function (response) {
                    /*  处理表头 */
                    initTableHead(response.table_config);
                    initTableBody(response.data_list,response.table_config);
                    $('.loading').addClass('hide');
                },
                error:function () {
                    $('.loading').addClass('hide');
                }
            })
        }
    
        //定制表头
        function initTableHead(table_config) {
            $('#tHead tr').empty();
            $.each(table_config,function (index,val) {
                var th = $("<th>");
                th.html(val.title);
                $('#tHead tr').append(th);
            })
        }
    
        //定制表体
        function initTableBody(data_list,table_config) {
            $.each(data_list,function (k,row_dict) {
                var tr = $('<tr>');
                $.each(table_config,function (kk,vv) {
                    var td = $('<td>');
                    var format_dict = {};
                    $.each(vv.text.kwargs,function (kkk,vvv) {
                        if (vvv[0] === '@'){
                            var name = vvv.substring(1,vvv.length);
                            format_dict[kkk] = row_dict[name];
                        }else {
                            format_dict[kkk] = vvv;
                        }
                    });
                    td.html(vv.text.tp1.format(format_dict));
                    tr.append(td);
                });
                $('#tBody').append(tr);
            })
        }
    
        // jquery 扩展
        jq.extend({
            'nBList':function (url) {
                requestUrl = url;
                init();
            }
        })
    
    })(jQuery);

     HTML中简化为:

    {% load staticfiles %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.css' %}">
        <style>
            .loading{
                position: fixed;
                top:0;
                left:0;
                right: 0;
                bottom: 0;
                background-color: black;
                opacity: 0.4;
                z-index: 1000;
            }
            .loading .img{
                height: 32px;
                width: 32px;
                background: url("{% static 'images/loading.gif' %}");
                position: fixed;
                top:50%;
                left: 50%;
                margin-top: -16px;
                margin-left: -16px;
                z-index: 10001;
            }
            .hide{
                display: none;
            }
        </style>
    </head>
    <body>
    <div class="loading">
        <div class="img"></div>
    </div>
    
    <div class="container">
        <h1>服务器列表</h1>
        <table class="table table-bordered">
            <thead id="tHead">
                <tr></tr>
            </thead>
            <tbody id="tBody"></tbody>
        </table>
    </div>
    
    <script src="{% static 'bootstrap/js/jquery-3.2.1.js' %}"></script>
    <script src="{% static 'bootstrap/js/nb-list.js' %}"></script>
    <script>
    
        $(function () {
            $.nBList('/server_json.html');
        })
    
    </script>
    
    
    </body>
    </html>

          

  • 相关阅读:
    C语言基础课程 第二课 HelloWorld不为菜鸟所知的秘密
    C语言基础课程 第一课 Linux环境配置小实战httpserver
    Linux企业级开发技术(6)——libevent企业级开发之内存管理
    Linux企业级开发技术(7)——libevent企业级开发之锁和线程
    Linux内存管理学习笔记--概述
    5月16日云栖精选夜读:从0到1构建大数据生态系列1:数据蛮荒中的拓荒之举
    luoguP1063 能量项链
    bzoj1060 [ZJOI2007]时态同步
    bzoj1864 [Zjoi2006]三色二叉树
    bzoj1864 [Zjoi2006]三色二叉树
  • 原文地址:https://www.cnblogs.com/guomeina/p/7652366.html
Copyright © 2011-2022 走看看