首页 > 其他分享 >jquery根据json自动生成表格

jquery根据json自动生成表格

时间:2023-06-16 17:47:08浏览次数:38  
标签:jquery function val 表格 list json var data row

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>导入文件</title>
    <link rel="stylesheet" href="/js/bootstrap.min.css">
    <script src="/js/jquery.min.js"></script>
    <script src="/js/bootstrap.min.js"></script>
    <link rel="stylesheet" href="/css/animate.css">
    <link rel="stylesheet" href="/css/global.css">
    <link rel="stylesheet" href="/css/loading.css">
</head>

<body>
    <div style="width: 1200px;margin: 0 auto;margin-top: 20px;">
        <form class="form-horizontal" method="post" enctype="multipart/form-data" role="form">
            <div class="form-group">
                <label for="firstname" class="col-sm-2 control-label">importTypeId</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control" id="importTypeId" name="importTypeId"
                        placeholder="importTypeId">
                </div>
            </div>
            <div class="form-group">
                <label class="col-sm-2 control-label" for="inputfile">文件输入</label>
                <div class="col-sm-10">
                    <input type="file" name="file" id="inputfile">
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                    <button type="button" class="btn btn-default" id="submit">上传</button>
                </div>
            </div>
        </form>

        <h1 id="LogInfo"></h1>
        <div style="overflow: auto;">
            <table align="center" class="table table-striped" id="table" border="1" style="margin-top: 20px;">
            </table>
        </div>


    </div>
    <script src="/js/loading.js"></script>
    <script>
        function loading() {
            $('body').loading({
                loadingWidth: 240,
                title: '请稍等!',
                name: 'upload',
                discription: '正在上传中...',
                direction: 'column',
                type: 'origin',
                // originBg:'#71EA71',
                originDivWidth: 40,
                originDivHeight: 40,
                originWidth: 6,
                originHeight: 6,
                smallLoading: false,
                loadingMaskBg: 'rgba(0,0,0,0.2)'
            });
        }




        $('#submit').click(function () {

            loading();
            $('#table').html('');
            $('#LogInfo').html('');

            var formdata = new FormData();
            formdata.append('file', $('#inputfile')[0].files[0]);
            formdata.append('importTypeId', $('#importTypeId').val());

            $.ajax({
                url: '/api/Upload/UploadExcel',
                type: 'post',
                contentType: false,
                processData: false,
                data: formdata
            }).done(function (data) {

                console.log(data);
                if (data.flag = 'success') {

                    Unplanned.logId = data.detail;
                    Unplanned.SharedResourceCreatingCheck();


                }
                else {
                    alert(data.flag + (data.message ? data.message : ""));
                }

            });
        })


        var Unplanned = {
            logId: 0,
            SharedResourceCreatingCheckUrl: '', // url api
            timer: null,
            SharedResourceCreatingCheck: function () {
                var _this = this;
                var obj = {};
                _this.SharedResourceCreatingCheckUrl = "/api/Upload/GetImportLogById?id=" + _this.logId;

                _this.PollingSharedResourceCreatingCheck(obj, 1000, function (data) {

                    removeLoading('upload');

                    var msg = '当前导入批次:' + _this.logId + ' 状态:' + (data.detail.importStatus == 'success' ? '成功' : '失败');
                    alert(msg);
                    $('#LogInfo').html(msg);

                    if (data.detail.importStatus == 'fail') {
                        constructTable('#table', JSON.parse(data.detail.importMsg))
                    }
                    else {
                        $.get('/api/Upload/LoadImportDataByBatch?pageSize=10&id=' + _this.logId).done(function (data) {

                            constructTable('#table', data.detail)

                        });
                    }

                });
            },
            // 轮询
            PollingSharedResourceCreatingCheck: function (data, delay, cb) {
                var _this = this;
                delay = delay || 1000;
                $.get(_this.SharedResourceCreatingCheckUrl, data, function (res) {
                    if (!res.isError && res.detail.importStatus == 'New') {
                        _this.timer = setTimeout(function () {
                            _this.PollingSharedResourceCreatingCheck(data, delay, cb);
                        }, delay)
                    } else {// 不需要轮询调回调
                        cb && cb(res);
                    }
                })
            }
        };


        function constructTable(selector, list) {

            $(selector).html('');

            // Getting the all column names
            var cols = Headers(list, selector);

            // Traversing the JSON data
            for (var i = 0; i < list.length; i++) {
                var row = $('<tr/>');
                for (var colIndex = 0; colIndex < cols.length; colIndex++) {
                    var val = list[i][cols[colIndex]];

                    // If there is any key, which is matching
                    // with the column name
                    if (val == null) {
                        val = "";
                    }


                    if (val?.constructor === Object) {
                        val = JSON.stringify(val);
                    }



                    row.append($('<td/>').html(val));
                }

                // Adding each row to the table
                $(selector).append(row);
            }
        }

        function Headers(list, selector) {
            var columns = [];
            var header = $('<tr/>');

            for (var i = 0; i < list.length; i++) {
                var row = list[i];

                for (var k in row) {
                    if ($.inArray(k, columns) == -1) {
                        columns.push(k);

                        // Creating the header
                        header.append($('<th/>').html(k));
                    }
                }
            }

            // Appending the header to the table
            $(selector).append(header);
            return columns;
        }

    </script>

</body>

</html>

标签:jquery,function,val,表格,list,json,var,data,row
From: https://www.cnblogs.com/xinzhyu/p/17486136.html

相关文章

  • java中xml和json转换
    packagecom.lbdz.bsf.util;importnet.sf.json.JSONObject;importnet.sf.json.JSONSerializer;importnet.sf.json.xml.XMLSerializer;/***xml和json转换*/publicclassXMLUtils{/***xml转化为字符串*@paramxml*@returnstr......
  • 字符串数组不能转化对象数组,jsonArray也转化报错
    刚开始写法------错误JSONArrayjsonArray=(JSONArray)this.getJsonFilter().get("ids");PltPayDuesModel[]payDuesModels=(PltPayDuesModel[])jsonArray.toArray();报这个[Ljava.lang.Object;cannotbecastto[Ljava.lang.String;由于无法直接,因此需要曲线救国......
  • 防止Javascript重新排序JSON
    javascript中的对象为什么会按照键来自动排序?原因:javascript中的对象按照键来自动排序是浏览器造成的,经查V8的相关文档得出以下结论:Chrome浏览器下创建的js对象数组会自动按照键排序、FireFox99.0版本(最新版本)会,FireFox 4.0.1不会。 解决方法:必须将对象的键值转换为字符,......
  • json 处理
    需要引入"encoding/json"包json解析到mapjsonStr:="{\"a\":\"test\",\"b\":\"testb\"}"vardatmap[string]stringerr:=json.Unmarshal([]byte(jsonStr),&dat)iferr==nil{fmt.Println(da......
  • Java的JSON处理
    Java的JSON处理用于JSON处理的JavaAPI(JSON-P)提供可移植的API,以使用对象模型和流式API来解析,生成,转换和查询JSON。JSON-P中使用JSON的两种方式有两种:流式API和对象模型API。JSON-P流式API流式API将解析和生成控制移交给程序员。流式API提供了基于事......
  • javascript eval和JSON之间的联系
    本文着重解释eval函数和JSON数据格式之间的联系以及一些细节上的问题。如果您想详细了解eveval :https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Functions/EvalJSON:http://www.json.org/eval函数的工作原理eval函数会评估一个给定的含有JavaScr......
  • excel表格有很多列,copy进word时候如何自适应?
    word里,选中表格,表格工具——自动调整——根据内容调整表格这样,word里,一页的宽度,就可以显示完excel里的所有列了......
  • 利用jQuery制作简易的table上下无缝轮播
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=......
  • 【Python】表格模块
      ......
  • jquery语法总结与注意事项
    1、关于页面元素的引用通过jquery的$()引用元素包括通过id、class、元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom定义的方法。2、jQuery对象与dom对象的转换只有jquery对象才能使用jquery定义的方法。注意dom对象和......