定时ajax获取日志(easyui进度条+js滚动条)

EasyUI messager.progress 进度条的使用 注意:这是MAVEN项目,直接导入Eclipse 到Tomcat服务器访问sendSMS.jsp即可 介绍: 项目是http://blog.youkuaiyun.com/wanghaofeng/article/details/18305599 文章代码的实现,实现了easyui 进度条的功能,感觉很好玩,可以参考一下 立即下载

定时ajax获取日志(easyui滚动条+js)

定时ajax在获取日志信息方便还是很常用的,在这里我使用了easyui的进度条插件,现在整理了一下,完成的功能为:启动定时ajax,清除定时器

js代码

设置全局变量

//为定时器创建一个数组,到时候一起清除
var dingShiQiArr=[];
//提示日志信息
var content ="";
//控制定时ajax的开关
var flag=false;
//定时获取日志信息的ajax属性
var getting = {
		type : "post",
		dataType:"json",
		async : true, //这里要注意,不能为false,否则这个请求会等上一个求完成才执行
		url :contextPathName+'/reportInfo/getLoggerInfos.do',
		beforeSend: function () {
			return flag;
		},
		success:function(data){
			var isStop=data.isStop;//这里为后台的日志信息被读取完后,告诉前台停止定时ajax的标志
			var resultList=data.resultList;
			if(resultList==null||(resultList.length==0)){//日志如果信息为空,不管他,继续请求
					return;
			}else{
				var importProgress= data.progress;//进度条
				$('#importProgressbar').progressbar('setValue',parseInt(importProgress));
				var loggerType=data.loggerType;
				$.each(resultList, function(index, value) { 
					content +="<p>"+value+"</p>";//将日志写入前台
				});
				$('#importResultDiv').html(content);
				document.getElementById('importResultDiv').scrollTop = document.getElementById('importResultDiv').scrollHeight;
				if(isStop==true){
					flag=false;
					$('#importProgressbar').progressbar('setValue',100);
					function test(){ 
    						flag=false;
    						for (var i = dingShiQiArr.length - 1; i >= 0; i--) {
		                			clearInterval(dingShiQiArr[i]);//清除定时器
    			        		};
    					}
    					var t1 = window.setTimeout(test,200); //200毫秒后执行test方法
    					window.clearTimeout(t1);
				}
			}
		},
		error: function() {
			return;
		}
};

启动定时ajax

dingShiQiArr.push(window.setInterval(function(){$.ajax(getting)},200)); 

这个在导入或导出操作之前放上这一行就行,但记得导入导出的ajax请求的async属性也为true!

Controller

这个controller实现的是从session里获取日志信息(进度条信息),每次获取的条数都只是一部分(上次读取位置到最后),这样处理,
 @RequestMapping ("/getLoggerInfos")
    @ResponseBody
    public String getLoggerInfos (HttpServletRequest request, HttpServletResponse response)
    {
        Map <String, Object> jsonMap = new HashMap <String, Object> ();
        List <String> resultList = new ArrayList <String> ();
        List <String> resultListToHtml = new ArrayList <String> ();
        String loggerType = request.getParameter ("loggerType");
        Integer progress = 100;
        boolean flag = false;
        // 读取日志的下标
        int loggerIndex = 0;
        HttpSession session = request.getSession ();
        if (("import").equals (loggerType))
        {
            // 获取导入日志信息
            Object obj = session.getAttribute ("resultList");
            Object loggerIndexObj = session.getAttribute ("loggerIndex");
            Integer isExist = (Integer) loggerIndexObj;
            if (null != isExist)
            {
                loggerIndex = isExist;
            }
            jsonMap.put ("loggerType", loggerType);
            if (null != obj)
            {
                resultList = (List <String>) obj;
                for (; loggerIndex < resultList.size (); loggerIndex++)
                {
                    String str = resultList.get (loggerIndex);
                    if ("OVER".equals (str))
                    {
                        flag = true;
                        session.removeAttribute ("resultList");
                    }
                    else
                    {
                        resultListToHtml.add (str);
                    }
                }
                session.setAttribute ("loggerIndex", Integer.valueOf (loggerIndex));
            }
            else
            {
                resultList = null;
            }
            // 获取导入进度
            Object obj1 = session.getAttribute ("importProgress");
            if (null != obj1)
            {
                progress = (Integer) obj1;
            }
        }
        else if (("export").equals (loggerType))
        {
            // 获取导出日志信息
            Object obj = session.getAttribute ("exportResultList");
            Object loggerIndexObj = session.getAttribute ("exp_loggerIndex");
            Integer isExist = (Integer) loggerIndexObj;
            if (null != isExist)
            {
                loggerIndex = isExist;
            }
            jsonMap.put ("loggerType", loggerType);
            if (null != obj)
            {
                resultList = (List <String>) obj;
                for (; loggerIndex < resultList.size (); loggerIndex++)
                {
                    String str = resultList.get (loggerIndex);
                    if ("OVER".equals (str))
                    {
                        flag = true;
                        session.removeAttribute ("exportResultList");
                    }
                    else
                    {
                        resultListToHtml.add (str);
                    }
                }
                session.setAttribute ("exp_loggerIndex", Integer.valueOf (loggerIndex));
            }
            else
            {
                resultList = null;
            }
            // 获取导入进度
            Object obj1 = session.getAttribute ("exportProgress");
            if (null != obj1)
            {
                progress = (Integer) obj1;
            }
        }
        jsonMap.put ("isStop", flag);
        jsonMap.put ("resultList", resultListToHtml);
        jsonMap.put ("progress", progress);
        String jsonStr = JSONObject.fromObject (jsonMap).toString ();
        return jsonStr;
    }

html

<!-- 显示日志弹出框 importResultDiv-->
	<div id="showResult" class="easyui-dialog"
		style="width: 600px; height:550px;" closed="true"
		buttons="#showResult-buttons" data-options="modal:true">
			<div id="importProgressbar" class="easyui-progressbar" style="width:540px;margin-left:20px;margin-top:20px;"></div>
			<div id="importResultDiv" class="importResultDiv">
	
			</div>
	</div>
	
	<div id="showResult-buttons">
		<a href="javascript:void(0)" class="easyui-linkbutton"
			iconCls="icon-cancel" id="claenResult">关闭</a>
	</div>




补充(日志显示框滚动条在底部)

document.getElementById('importResultDiv').scrollTop = document.getElementById('importResultDiv').scrollHeight;
该代码表示,日志框出现滚动条时,会滚动到最底部,将呈现出一种动态的效果给用户!

效果




一个新闻Ajax调用显示的jquery特效.rar 一个基于 jQuery新闻显示插件,可循环切换显示网站里预设的内容,并支持淡入淡出的显示效果 ,滑开隐藏Slide Up-Down, 支持手支控制加载内容,向左向右打开Left To Right 的效果,运行效果如下图所示。 立即下载

相关推荐

解决EasyUIdataGrid列比较多,无数据,列展现不全

解决EasyUIdataGrid列比较多,无数据,列展现不全

Easyui通用消息提示、提交表单、ajax请求

其实就是封装了一下easyui自带的功能使之更加方便, 提交表单时带进度条 /* *easyui通用js代码 * */ function showMessage(title,text){ $.messager.show({ title:title, msg:''+text+'', timeout:2000, showType:'show', style:{

Reiner的专栏 5985

Jquery Easyui进度条组件Progress使用详解(8)

本文实例为大家分享了Jquery Easyui进度条组件的实现代码,供大家参考,具体内容如下 加载方式 Class加载 <div class=easyui-progressbar data-options=value:60 xss=removed> </div> JS调用加载 <div id=box xss=removed></div> [removed] $(function () { $('#box').progressbar({ // 设置进度条宽度 width : '200', // 设置进度

为jquery ajax请求增加正在运行提示

在jquery源码中增加showMask()方法调用: if ( xhrSupported ) { jQuery.ajaxTransport(function( options ) { // Cross domain only allowed if supported through XMLHttpRequest if ( !options.crossDomain || support....

weixin_34234829的博客 209

MQTT阿里云OTA 调试记录

2.验证,这个验证是什么意思呢,就是阿里云会把你包的信息,比如包大小,streamid(相当于包的识别码),版本号发送给你的设备,然后如果你没发送升级成功的包给阿里云,这里会是一直验证中的状态,那你的设备每次重新连接阿里云,发送connect包给阿里云的时候,阿里云就会发送一次这个验证(upgrade)包。提取到了之后就可以发送请求包了,这个请求包比较坑,也可能是我没付费,他的包一次最多只有1024个字节的数据。之前说了,验证状态下,设备发送connect包给阿里云,阿里云就会发一个upgrade包给你。

qq_42585211的博客 1231

从零搭建ROS1导航小车(一):松灵SCOUT Mini底盘通讯配置与ROS包编译避坑指南

本文详细介绍了从零开始搭建ROS1导航小车的初始步骤,重点讲解松灵SCOUT Mini底盘的通讯配置与ROS包编译避坑指南。内容包括硬件连接、CAN通讯配置、ROS工作空间构建及编译优化等实用技巧,帮助开发者快速实现自主导航小车的通讯功能。

weixin_27014595的博客 189

easyui progressbar ajax,jQuery EasyUI ProgressBar进度条组件

ProgressBar(进度条)组件,这个还是挺好玩的,我们在自己做点什么的时候经常能用到,比如上传下载文件、导入导出文档啊、载入网页等等。应用场景很多,使用起来还很简单。示例:jQuery Easy UI$(function () {//$.fn.progressbar.defaults.value = 30;//想要修改进度条的颜色去css文件中去修改$('#box').progressbar...

weixin_28913687的博客 300

ROS2_IGH方案配置(二)——Ubuntu22.04 实时内核性能验证与调优

本文详细介绍了在Ubuntu22.04系统上配置ROS2_IGH方案时,如何验证和调优PREEMPT_RT实时内核性能。通过使用cyclictest工具进行基准测试和压力测试,分析中断与硬件延迟,并优化内核参数,确保系统满足工业控制领域对硬实时性的苛刻要求。文章还提供了针对ROS2的特殊优化建议和性能监控方案,帮助开发者实现毫秒级延迟的稳定控制。

weixin_30791095的博客 224

Easy UI弹出加载中(loading)提示的两种方法

最近项目的一个查询耗时比较久,用户点击查询没有反应可能造成重复点击,并且以为是bug,所以为了用户体验好一点想弹出加载中的遮罩提示,因为后台框架用的Easy UI,所以想到了两种办法。 方法一:利用Easy UI自带的遮罩样式,控制显示与隐藏 /*加载数据提示*/ function ajaxLoading() { $("<d...

菜菜的博客 9137

ATE测试基础——直流参数测试

芯片测试在发展过程中诞生了许多术语,初次接触的人大部分都会被绕晕。因此为方便广大读者理解,在开始介绍测试项之前,需要对测试领域的名词进行解释。还有部分较为抽象的内容,需要略作展开。DUT——Device Under Test,正在被测试的器件Pin——器件引脚,信号引脚分为输入,输出,三态和双向四类,负责与外界进行信息交互;电源引脚分为电源和地两类,结构与信号引脚不同,负责给器件内部运行和外部输出提供电平。输入:在外部信号和器件内部逻辑之间起缓冲作用的信号输入通道;

你骄傲地飞远的博客 1万+

别再让OCV拖慢你的芯片!手把手教你用set_timing_derate优化STA时序(附CPPR实战)

本文深入探讨了芯片设计中OCV(On-Chip Variation)对时序分析的影响,并提供了使用`set_timing_derate`优化STA时序的实战指南。通过分阶段derate设置和CPPR技术,有效减少时序违例,提升芯片性能。文章结合TSMC 7nm工艺案例,详细解析了OCV建模与优化策略,助力工程师实现时序收敛。

weixin_42525005的博客 305

jQuery.Easyui 1.2.4 CHM API 下载

jquery easyui 1.2. 4 ChangeLog Bug menu: The menu position is wrong when scroll bar appears. fixed. accordion: Cannot display the default selected panel in jQuery 1.6.2. fixed. tabs: Cannot dis...

weixin_33851429的博客 110

Oracle EBS订单的流程(Order->AR)

基本流程创建订单路径:Order Management > Orders,Returns > Sales Orders填写订单头信息,客户,订单类型,销售人员填写订单体信息,输入物料,数量...然后Book Order,订单Book之后,你会发现订单头的Status的状态变成了“Booked”,订单行的状态为"Awaiting Shipping",记录下来你的订单号,后边的每一步都需要这个订单号。

田攀的日志 4万+

jsp相关知识

7-18 1、ajax 如果ajax无法跳转到后台链接,先检查data传的值是否正确,后台返回的值 response.getWriter.write(json.toString) 只能给页面返回字符串,而页面需要去转换通过ajax的配置dataType:'json' 或者 JSON.parse(data) 将data转成json格式   在java中将对象转成json数据格式,JSONObj...

weixin_30553777的博客 141

pip install mysql出现error: subprocess - exited-with-error的解决方案

本文主要介绍了pip install mysql出现error: subprocess - exited-with-error的解决方案,希望能对使用mysql的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 5万+

uniapp - 详解APP端免费人脸识别+人脸核身+人脸对比+活体检测插件功能完整源码,uniAPP纯前端实现不依赖后端API接口或第三方付费人脸识别功能示例(仅兼容安卓app与苹果ios App)

uniapp免费人脸认证功能,uniapp APP开发活体人脸识别,UniApp人脸识别与活体检测,人脸核身uni-app插件 活体检测 人脸对比 人脸识别 人脸认证 身份证件,uni-app人脸核身,如何在app端实现免费人脸识别教程,人脸核身uni-app插件活体检测,uniapp安卓ios百度人脸识别、活体检测、人脸采集APP原生插件,详细实现人脸识别和活体检测功能,实时监测人脸是否进入区域及动作是否正确播报,提供提供实名认证、身份证识别、有没有免费的,api,活体检测,人脸信息采集、刷脸扫脸认证示例

🏆 前端领域优质创作者 4386

Spring Boot实战:民间救援队救助系统设计与开发全解析

在Java Web开发领域,Spring Boot作为主流的快速应用开发框架,通过自动配置和约定优于配置的原则,极大地简化了企业级应用的搭建过程。其核心原理在于通过内嵌Servlet容器和Starter依赖,实现了开箱即用的开发体验,显著提升了开发效率。这一技术价值在于让开发者能够更专注于业务逻辑而非环境配置,尤其适合构建如管理系统、API服务等各类Web应用。在众多应用场景中,毕业设计和课程设计是学生将理论知识转化为工程实践的关键环节,一个功能完整、结构清晰的项目案例至关重要。本文聚焦于一个典型的Spri

weixin_33892359的博客 397

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SSM框架实验室设备管理系统:毕业设计实战指南与二次开发详解

在Java Web开发领域,SSM(Spring + Spring MVC + MyBatis)框架组合因其清晰的层次结构和成熟的生态,成为构建企业级应用的主流选择。其核心原理在于Spring的IoC容器管理对象生命周期,Spring MVC处理Web请求分发,而MyBatis则负责简化数据库操作,实现了业务逻辑、数据访问与表现层的有效解耦。这套技术栈的价值在于为开发者提供了一个稳定、可维护的工程实践模板,尤其适用于管理系统类应用。本文聚焦于一个具体的应用场景——实验室设备管理,通过剖析一个完整的SSM项目

diandingyin9417的博客 438

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

easyui progressbar ajax,jQuery EasyUI 教程-ProgressBar(进度条)

jQuery EasyUI 教程-ProgressBar(进度条)这款组件在工作工程中是非常实用的,我们在前端开发的某项延续性工作的进展过程中为了不让用户觉得程序死掉了,需要有个活动的进度条,表示此过程正在进行中。大家有没有对这款组件感兴趣呢?请看下文。使用$.fn.progressbar.defaults重写默认值对象。进度条提供了一个反馈显示一个长时间运行的操作进展。可以更新的进展条,让用户知...

weixin_31157123的博客 662

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

easyui 调用ajax时的loading效果

easyui ajax时的loading效果

以博促学 2万+

EasyUI进度条 后台实时监控

调用方法:start('DialogDiv',planIds); 方法详细:

hulufeng1203的专栏 7364

easyUI中程序执行时显示进度条

function download1() {             //if (where1 != '') {                 $.messager.progress({ interval: 180 });   //进度条开始                 $.post('Download', { sw: where1 }, function (result) {  

qq_34059693的博客 3886

EasyUI之进度条progressBar

1.样式 进度条提供了一个反馈显示一个长时间运行的操作进展。可以更新的进展条,让用户知道当前正在执行操作。 2.练习:动态加载进度条 progressBar <a id="btnID" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-

sunpy 9263

Ajax 实现加载进度条

先说说这个 beforeSend, 在请求发送前执行 比如 可以判断用户有没有登录 ,如果没有登录就停止请求 并提示。$.ajax({ url : 'my_action', dataType: 'script', beforeSend : function(xhr, opts){ if(1 == 1) //just an example { xhr.abor...

hahahhahahahha123456的博客 1万+
上一篇: 有关于easyui中dialog关闭的问题
下一篇: 文件下载(不创建文件,直接传到前台)
java_trainee
博客等级 码龄10年 12粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值