datatable刷新数据,js不整体刷新页面,使用DataTables表格插件定时更新后台数据变化

news2024/11/18 9:46:21

文章目录

  • 前言
  • 一、meta的http-equiv属性
  • 二、使用DataTables表格插件
    • 2.1.整体思路
    • 2.2.将$('#myTableId').DataTable({……})封装成函数
    • 2.3刷新表格数据函数
    • 2.4统一调用刷新表格的自动加载函数
    • 2.4定时间隔执行刷新自动加载函数


前言

最近遇到一个需求,需要刷新一个页面上的实时数据显示,最简单的办法当然是在页面头加入meta的http-equiv属性,这样是最简单的,但是这样的话页面每次刷新的时候会闪一下,体验感不是特别好,现在就只想更新一个表格中的数据而不是刷新整个页面。


一、meta的http-equiv属性

如果是刷新整个页面的话,使用下面这种方法是最简单的一行便可以搞定。
<meta http-equiv=”Refresh” content=”10”>
或者:
<meta http-equiv=”Refresh” content=”10;URL=http://www.baidu.com/”>
其中的10是指停留10秒钟后自动刷新,如果有URL,则自动刷新到该地址。

二、使用DataTables表格插件

2.1.整体思路

找了一些关于表格刷新的办法,这个不像刷新页面那样修改一下属性就可以,这个处理起来要复杂一些。
有的文章说使用:

$("#myTableId").dataTable( ).api().ajax.reload();
//或者
$('#myTableId').dataTable().ajax.reload();

但是这样使用会报错:DataTables warning (table id = ‘myTable’): Cannot reinitialise DataTable,这是因为DataTables重复初始化,Datatables 不允许多次初始化同一表格。虽然这个提示只是起告知作用,不会造成表格功能失效,但是会跳出这个错误提示的弹框
在这里插入图片描述

我们需要先清空datatable中原先的数据,再调用datatable,需要使用

$("#myTableId").dataTable().fnDestroy();

或者

if($.fn.dataTable.isDataTable(myTableId)){
   var table = $(myTableId).DataTable();
   table.clear();
   table.rows.add(data).draw();
} else {
   $(myTableId).DataTable(data);
}

我试了一下这个方法不起作用,而且这个也无法实现定时刷新的功能。
在js中想要定时执行某个函数是比较简单的,使用:

//定时任务,10000代表间隔10s执行一次
setInterval(Myfunction,10000)

现在的思路是:
1、先将$(‘#myTableId’).DataTable({……})封装成函数;
2、写一个刷新表格的函数,传入的参数是myTableId和要获取的数据源的URL,这样可以在刷新多个表格的时候传入对应的参数即可
3、写一个自动加载表格的函数,把要刷新的函数放进去
4、定时执行自动加载表格的函数
可能这里理解起来有点麻烦,看代码好理解一点

2.2.将$(‘#myTableId’).DataTable({……})封装成函数

要刷新的区域:

<div class="page-container">
    <div class="cl pd-5 bg-1 bk-gray mt-20">
        <span class="l "><strong id="total">Total</strong> </span>
        <span class="r"><span id="totalitems">Total Items:</span>
            <strong id="total-num">0</strong> </span> 
    </div>
  <div class="mt-20">
    <table id="overflow_table" class="table table-border table-bordered table-bg table-hover table-sort table-responsive">
      <thead>
      <tr class="text-c">
        <th width="40">OverflowID</th>
        <th width="100">Type</th>
        <th width="100">MailNum</th>
      </tr>
      </thead>
      <tbody>
      </tbody>
    </table>
  </div>
</div>

<div class="page-container">
<div class="cl pd-5 bg-1 bk-gray mt-20"> <span class="l"> <strong id="feedersdetail">Feeders Detail</strong></span> <span class="r"><span id="totalitems1">Total Items:</span><strong id="total-num1">0</strong> </span> </div>
<div class="mt-20">
    <table id="overflow_ind_table" class="table table-border table-bordered table-bg table-hover table-sort table-responsive">
        <thead>
        <tr class="text-c">
            <th width="40">FeedID</th>
            <th width="40">OverflowID</th>
            <th width="100">Type</th>
            <th width="100">MailNum</th>
        </tr>
        </thead>
        <tbody>
        </tbody>
    </table>
</div>
</div>

将绘制表格和显示数据的dataTable封装成函数
需要在页面加载的时候就显示一次,需要在初始化时调用一次该函数:

$(document).ready(function() {
		initTableConfig();
    });
function initTableConfig(){
        $('#overflow_table').dataTable({
            "aaSorting": [[0, "asc"]],//默认第几个排序
            "bStateSave": true,//状态保存
            "pading": false,
            "searching:": false,
            "lengthChange": false,
            "paging": false,
            "retrieve":true,//20230628
            "aoColumnDefs": [
                //{"bVisible": false, "aTargets": [ 3 ]} //控制列的隐藏显示
                //{"orderable":false,"aTargets":[10]}// 不参与排序的列
                { "title": th_overflowid, "targets": 0},
                { "title": th_type, "targets": 1},
                { "title": th_nummail, "targets": 2}
            ],
            "language":{url:"/globallabel/datatable_label.json"},
            "ajax": {
                url: "/show_overflowcount",
                dataSrc: ''
            },
            "initComplete": function (settings, json) {
                $('#total-num').html(json.length);
            },
            "columns": [
                {"data": "overflowid"},//id
                {
                    "data": "overflowid",
                    "render": function (data) {
                        if (data == "0") return th_goodread;//"Good Read";
                        else if (data == "1") return th_nochute;//"No Chute in Solution";
                        else if (data == "2") return th_overmax;//"Over Max Circles";
                        else if (data == "3") return th_lost;//"Lost";
                        else if (data == "4") return th_multbar;//"Multiple Barcodes";
                        else if (data == "5") return th_nodest;//"No Destination";
                        else if (data == "6") return th_ipuovertime;//"IPU Overtime";
                        else if (data == "7") return th_vcsovertime;//"VCS Operater Overtime";
                        else if (data == "8") return th_vcsqueueot;//"VCS Queue Overtime";
                        else if (data == "9") return th_vcsrejected;//"VCS Rejected";
                        else if (data == "10") return th_noread;//"NO Read";
                        else if (data == "11") return th_mesrejected;//"MES Rejected";
                        else if(data =="100") return th_all;
                        else if(data=="22") return "撤单邮件";
                        else if(data=="23") return "多次往返";
                        else return data;
                    }
                },
                {"data": "nummail"}

            ]
        });

        $('#overflow_ind_table').dataTable({
            "aaSorting": [[0, "asc"]],//默认第几个排序
            "bStateSave": true,//状态保存
            "pading": false,
            "retrieve":true,//20230628
            "destory":true,//20230628
            "aoColumnDefs": [
                //{"bVisible": false, "aTargets": [ 3 ]} //控制列的隐藏显示
                //{"orderable":false,"aTargets":[10]}// 不参与排序的列
                { "title": th_feedid, "targets": 0},
                { "title": th_overflowid, "targets": 1},
                { "title": th_type, "targets": 2},
                { "title": th_nummail, "targets": 3}
            ],

            "language":{url:"/globallabel/datatable_label.json"},
            "ajax": {
                url: "/show_overflowcount_ind",
                dataSrc: ''
            },
            "initComplete": function (settings, json) {
                $('#total-num1').html(json.length);
            },
            "columns": [

                {"data": "inductionid"},//id
                {"data": "overflowid"},
                {
                    "data": "overflowid",
                    "render": function (data) {
                        if (data == "0") return th_goodread;//"Good Read";
                        else if (data == "1") return th_nochute;//"No Chute in Solution";
                        else if (data == "2") return th_overmax;//"Over Max Circles";
                        else if (data == "3") return th_lost;//"Lost";
                        else if (data == "4") return th_multbar;//"Multiple Barcodes";
                        else if (data == "5") return th_nodest;//"No Destination";
                        else if (data == "6") return th_ipuovertime;//"IPU Overtime";
                        else if (data == "7") return th_vcsovertime;//"VCS Operater Overtime";
                        else if (data == "8") return th_vcsqueueot;//"VCS Queue Overtime";
                        else if (data == "9") return th_vcsrejected;//"VCS Rejected";
                        else if (data == "10") return th_noread;//"NO Read";
                        else if (data == "11") return th_mesrejected;//"MES Rejected";
                        else return data;
                    }
                },
                {"data": "nummail"}

            ]
        });
    }

2.3刷新表格数据函数

代码如下(示例):

    //刷新数据
    function RefreshTable(tableId, urlData){
        $.getJSON(urlData, null, function(json )
        {
            table = $(tableId).dataTable();
            oSettings = table.fnSettings();
            //table.fnClearTable(this);
            table.fnClearTable();//动态刷新
            for (var i=0; i<json.length; i++)
            {
                table.oApi._fnAddData(oSettings, json[i]);//注意取得的jason串的字符数量,要与html中列的数量要有对应
            }
            oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
            table.fnDraw();
        });
    }

2.4统一调用刷新表格的自动加载函数

    function autoLoadDataTable(){
        RefreshTable('#overflow_table','/show_overflowcount2');
        RefreshTable('#overflow_ind_table','/show_overflowcount_ind2');
    }

2.4定时间隔执行刷新自动加载函数

//间隔3s执行一次
    setInterval(autoLoadDataTable,3000);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/705396.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【新版系统架构】第七章-系统架构设计基础知识(架构风格、复用)

软考-系统架构设计师知识点提炼-系统架构设计师教程&#xff08;第2版&#xff09; 第一章-绪论第二章-计算机系统基础知识&#xff08;一&#xff09;第二章-计算机系统基础知识&#xff08;二&#xff09;第三章-信息系统基础知识第四章-信息安全技术基础知识第五章-软件工程…

安装两个mysql

标题:安装两个mysql 参考blog&#xff1a;MySQL–修改mysql服务可执行文件的路径&#xff08;Windows&#xff09; 参考视频&#xff1a;mysql安装-安装多个mysql方法 安装第一个&#xff0c;网上有很多教程&#xff0c;这里就附上一个链接了&#xff1a;mysql5.5安装 安装第…

JS知识点汇总(七)--数据类型

1. JavaScript中的简单数据类型有哪些&#xff1f; 1、概述 JS 中有六种简单数据类型&#xff1a;undefined、null、boolean、string、number、symbol ES10中的新特性 BigInt (任意精度整数)&#xff0c;目前还处于stage-4阶段&#xff0c;不出意外即将成为js的第七种基本数据…

036:mapboxGL点击某位置,转换坐标为地址,弹出地理信息

第036个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中点击某位置,转换坐标位地址,弹出地理信息. 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共106行)相关API参考:专栏目标示例效果 配置方式 1)…

完整的复数类

复数类应该具有的操作 运算&#xff1a;&#xff0c;-&#xff0c;*&#xff0c;/ 比较&#xff1a;&#xff0c;! 赋值&#xff1a; 求模&#xff1a;modulus 利用操作符重载 统一复数与实数的运算方式 统一复数与实数的比较方式 注意事项 C 规定赋值操作符 () 只能重载…

vue项目运行不起来,可能是版本等不兼容问题

给pakeage.json 运行脚本前加上&#xff1a;set NODE_OPTIONS--openssl-legacy-provider && 即可。

echarts 实现3D饼图

2023.6.30今天我学习了如何使用echarts渲染一个3d的饼图&#xff0c;效果如下&#xff1a; 相关代码如下&#xff1a; <template><div ref"pie3d"/> </template> <script>mounted() {this.myChart this.$echarts.init(this.$refs.pie3d);…

【AUTOSAR】BMS开发实际项目讲解(二十五)----电池管理系统安全状态过渡

安全状态过渡 关联的系统需求 TSR-BMS-S201、TSR-BMS-S202、TSR-BMS-S203、TSR-BMS-S204、TSR-BMS-S601、TSR-BMS-S602、TSR-BMS-S603、TSR-BMS-S604、TSR-BMS-S605、TSR-BMS-S606、TSR-BMS-S607、TSR-BMS-S608、TSR-BMS-S609、TSR-BMS-S610、TSR-BMS-S611、TSR-BMS-S612; TSC…

【Linux系统编程】—进程学习笔记(fork进程创建、退出、僵死进程与孤儿进程、如何避免僵死进程)

目录 一、进程关键概念 二、进程创建实战 1、fork函数 2、fork创建一个子进程的一般目的&#xff1a; 3、fork函数实例&#xff1a; 4、fork的写时拷贝技术&#xff08;COW&#xff09; 三、进程退出 1、正常退出 2、异常退出 3、总结 四、僵死进程与孤儿进程 1、什…

融合学习:跨文化交流的学习平台

在全球化的时代&#xff0c;跨文化交流已经成为了一个不可避免的现象。在这种情况下&#xff0c;融合学习平台成为了一个非常重要的工具&#xff0c;可以帮助人们更好地了解和学习不同文化之间的差异和相似之处。本文将探讨融合学习平台的重要性&#xff0c;以及如何选择最佳的…

构建交互式数据框架:使用Gradio的Dataframe模块

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

查找算法-线性搜索

线性搜索 简介 线性搜索是一种简单的搜索算法&#xff0c;也被称为顺序搜索。它从数据集的起始位置开始&#xff0c;逐个比较每个元素&#xff0c;直到找到目标元素或遍历完整个数据集为止。如果目标元素存在于数据集中&#xff0c;线性搜索会返回该元素的位置或索引&#xf…

照片如何转存到手机笔记中?具体方法教程在这里

传统的笔记形式一般是以文字的形式记录&#xff0c;通常是在一个笔记本中写下自己的所感所想、工作、生活等方面的内容。有时也有人会选择贴上照片&#xff0c;成为个人回忆的重要资料。 而随着手机笔记的出现&#xff0c;很多人选择使用它来记录&#xff0c;因为我们可以随时…

小米 红米 Redmi note11 4G 5G 手机解锁BL 秒BL解锁 教程 跳过168小时 selenes evergo线刷机包下载

红米&#xff08;Redmi&#xff09;Note 11 5G 手机BL解锁 红米note11 4G/5G 秒解锁BL锁 方法 教程 跳过168小时 新版本 selenes evergo 红米Note11系列版本非常多&#xff0c;从4G开始一直到后面出现的11R&#xff0c;我们常见的机型有红米 Note11/11Pro/11Pro/11SE/11R等等&…

管理类联考——数学——知识篇——公式——最难记

立方和与立方差公式 a 3 b 3 ( a b ) ( a 2 ∓ a b b 2 ) a^3b^3(ab)(a^2∓abb^2) a3b3(ab)(a2∓abb2) 一元二次方程求根公式 x − b b 2 − 4 a c 2 a &#xff0c; b 2 − 4 a c ≥ 0 x\frac{-b\sqrt{b^2-4ac}}{2a}&#xff0c;\sqrt{b^2-4ac}≥0 x2a−bb2−4ac ​​&…

蓝牙模块(HC-05/HC-06)详解

这里写目录标题 0. 蓝牙概述蓝牙技术的特点 1. 常见的蓝牙模块2. HC-05/HC-062.1 概念2.2 区别 3. STM32使用HC-05通信3.1 方法3.2 示例代码 0. 蓝牙概述 蓝牙&#xff08;Bluetooth&#xff09;是一种用于无线通信的技术标准&#xff0c;允许设备在短距离内进行数据交换和通信…

初学mybatis(七)缓存

学习回顾&#xff1a;初学mybatis&#xff08;六&#xff09; 一、简介 1、什么是缓存 [ Cache ]&#xff1f; 存在内存中的临时数据。将用户经常查询的数据放在缓存&#xff08;内存&#xff09;中&#xff0c;用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询&#x…

6应用层-6.2【实验】【计算机网络】

6应用层-6.2【实验】【计算机网络】 前言推荐6应用层知识一、DNS常用记录类型&#xff1a;二、nslookup命令的用法 6.1 Web服务与FTP服务配置6.2 DNS域名系统配置实验目的实验内容及实验环境实验原理实验过程1.搭建如图所示的网络拓扑2.测试网络连通性3.在服务器上启用DNS服务&…

腾讯云部署tomcat问题--使用localhost访问没问题但是使用公网访问就有问题

1、使用localhost访问没问题。 2、使用公网访问就有问题 3、解决方案 3.1设置了一个规则&#xff0c; 3.2查看页面&#xff0c;访问OK

如何在 Shadow 插件化框架中动态加载和调用插件中的方法

Shadow是一种Android插件化框架&#xff0c;它允许将应用功能模块以插件的方式集成到宿主应用中。插件化是指将应用的不同模块打包成独立的插件&#xff0c;可以在运行时动态地加载和卸载这些插件&#xff0c;从而实现动态扩展和灵活组合功能。 Shadow插件化框架采用了类加载器…