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;
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>
  用在什么地方?
    当从后端取数据比较慢时,在这期间可以加上加载的图片。当数据加载出来,就隐藏加载图片。

    

    前端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>

 

      

转载于:https://www.cnblogs.com/guomeina/p/7652366.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,对于这个问题,我可以给您提供一些帮助。Bootstrap提供了一些可用于动态填充数据的组件和方法。例如,您可以使用jQuery的.load()方法来动态加载HTML内容。另外,Bootstrap的Modal(弹出框)组件也可以使用JavaScript动态填充数据。如果您有具体的问题或需求,我可以给您更详细的建议。 ### 回答2: Bootstrap 是一个非常流行的前端开发框架,它提供了许多可重用的组件和样式,使得网站的开发变得更加简单快捷。而动态填充数据是指在网页加载时,通过 JavaScript 或其他编程语言动态地将数据填充到页面。 在 Bootstrap ,可以使用一些功能强大的 JavaScript 插件来实现动态填充数据。其最常用的插件是 jQuery,它提供了方便的 DOM 操作方式,可以轻松地获取页面元素并修改其内容。 要在网页动态填充数据,首先需要在页面定义需要填充数据的元素。例如,可以使用 Bootstrap 的表格组件来创建一个表格,并在其的某个元素填充数据。然后,使用 jQuery 的选择器来选择这个元素,并使用 jQuery 提供的方法来修改其内容。 例如,可以使用 jQuery 的 `text()` 方法来设置元素的文本内容,或者使用 `html()` 方法来设置元素的 HTML 内容。通过获取需要填充数据的元素,并使用这些方法来设置其内容,就可以实现动态填充数据的效果。 除了使用 jQuery,还可以使用其他的 JavaScript 框架或库来实现动态填充数据。例如,可以使用 Vue.js 或 React.js 等框架来构建前端应用程序,并使用它们提供的数据绑定功能来实现动态填充数据的效果。 总而言之,使用Bootstrap可以快速搭建网页,而动态填充数据则可以通过JavaScript等编程语言实现。这两者的结合使用可以让我们的网页更加动态、具有交互性。 ### 回答3: Bootstrap是一个流行的前端框架,它提供了丰富的CSS和JavaScript组件,可以帮助我们快速构建响应式和美观的网页。动态填充数据是指在网页通过获取外部数据并将其动态显示在页面上。 使用Bootstrap动态填充数据有多种方式。一种常见的方法是通过Ajax请求从服务器获取数据,然后使用JavaScript数据插入到指定的HTML元素。通常,在页面加载完成后,我们会发送一个异步请求,从服务器获取数据。一旦请求成功,我们可以使用JavaScript数据插入到预设的Bootstrap组件或自定义的HTML元素。 另一种常见的方法是使用Bootstrap提供的数据填充插件。Bootstrap提供了一些插件,如模态框、轮播图等,可以通过添加特定的属性和数据来动态填充内容。我们可以使用JavaScript或jQuery等脚本语言,将数据动态地插入到指定的插件。例如,我们可以使用JavaScript代码根据用户输入的搜索关键字动态创建一个模态框,并在模态框显示相应的搜索结果。 除了前端技术外,后端也可以使用Bootstrap动态填充数据。例如,在服务器端使用服务器端脚本语言(如PHP、Python等)生成HTML页面时,可以根据数据库数据动态填充Bootstrap组件。通过与数据库的交互,我们可以将数据查询结果动态地呈现在Bootstrap的各种组件,例如表格、列表等。 总而言之,Bootstrap提供了丰富的组件和插件,让我们能够更加简洁、美观地呈现动态数据。无论是通过前端的Ajax请求还是后端数据处理,我们可以根据具体需求和开发环境选择合适的方法来动态填充数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值