`

Javascript知识拾遗:动态创建方法+多个异步监测

阅读更多

    这几天在做一个Web监测系统,需要对多个Server进行监测,采用的做法就是把需要监测的Server在页面上显示出来,然后通过Ajax对各个Server进行异步监测,开始的时候,针对每个Server,我都采用同一个JS方法循环和后台进行异步通信,结果程序一跑,发现根本不能做到同时异步监测多个Server,因此我想到了在Web页面Load的时候,根据后台返回的Server的个数,动态为每个Server创建不同的JS函数来处理异步通信请求。这样就可以做到同时异步监测多个Server。代码如下:

 

Html代码,被监测的Server列表:

<body onload="initializeMethod()">
<table width="500">
<tr>
<td width="100%">
      <table width="500" id="serverTab" border="1" cellpadding="0" cellspacing="0" align="left">
        <tr bgcolor="#0099CC">
        <td width="30%"><div align="center"> Host</div></td>
        <td width="15%"><div align="center"> Port</div></td>
        <td width="15%"><div align="center"> Interval(s)</div></td>
        <td width="35%"><div align="center"> Comment</div></td>
        </tr>
        <s:iterator value="serverListByType" id="serverList"  > 
        <tr>
        <td><div align="left"><s:property value="host" /> </div></td>
        <td><div align="left"><s:property value="port" /></div></td>
        <td><div align="left"><s:property value="interval" /></div></td>
        <td><div align="left"><s:property value="comment" /> </div></td>
        </tr>
         <br /> 
        		</s:iterator>
             </table>
             </td>
             </tr>


      </table>

</body>

 JS代码,动态生成异步监测函数:

    <script type="text/javascript">
    var functionArray = new Array();
    function initializeMethod(){

    	   var serverTab=document.getElementById("serverTab");
    	   for(var i = 1; i<=serverTab.rows.length-1; i++)
      	   {
    		   functionArray[i] = function(rowId){
    		      	var xmlHttp ; 
   		    	    if(window.XMLHttpRequest) {   
   		    	           
   		    	        xmlHttp = new XMLHttpRequest;      
   		    	           
   		    	    } else if (window.ActiveXObject) {   
   		    	           
   		    	        xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");   
   		    	    } else {   
   		    	           
   		    	        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");   
   		    	    }   
   		            var tab=document.getElementById("serverTab");
   		            var cbx = document.getElementsByName("server_id");
   					var interval = 0;
   					var first=true;
   					//tab.rows[rowId].bgColor='FFFFFF ';
   					//var minInterval = tab.rows[1].cells[3].children[0].value ;
   		            var ServerLists="";
 		                for(var j=0;j<tab.rows[rowId].cells.length;j++)
 		                {
 		                    for(var z=0;z<tab.rows[rowId].cells[j].children.length;z++)
 		                    {
 		                      var cb= tab.rows[rowId].cells[j].children[z];
 		                      ServerLists+=cb.innerText;
 		                      ServerLists+=",";
 		                    }

 		                }
 		                ServerLists+="\n";
     		    	    var url = "startMonitor"; 
     		    	    var param = "serverList="+ServerLists;
     		    	    xmlHttp.open("post",url,true);   
     		    	    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
     		    	    xmlHttp.onreadyStatechange=function(){   

     		    	        if(xmlHttp.readyState==4) {   
     		    	            if( xmlHttp.status == 200 ){
         		    	                setInterval("functionArray["+rowId+"]("+rowId+")",interval); 
     		        	                 if(xmlHttp.responseText == 0)
     		           	                {
     		       	        	       tab.rows[rowId].bgColor='#FF0000 ';
     		           	                 }else
     		             	                {
     		           	        	     tab.rows[rowId].bgColor='#33FF33';
     		                                }
     		    	            } 
     		    	        } else {   

     		    	        }   
     		    	    }  
     		    	    xmlHttp.send(param); 


    		   };
      	   }

    	   refreshMonitorStatus();
    }
    	function  refreshMonitorStatus()
    	{
            var tab=document.getElementById("serverTab");
            var cbx = document.getElementsByName("server_id");
            for(var i=1;i<=tab.rows.length-1;i++)
            {
  	     tab.rows[i].bgColor='FFFFFF ';
          	    functionArray[i](i);
            }
       	}
    	    
        </script>

 

 

分享到:
评论

相关推荐

    QML中动态创建组件(同步/异步)的方法

    这两种JavaScript方法可以让你在运行时动态地创建组件,但需要注意的是,它们都在JavaScript上下文中进行,可能涉及线程同步问题。如果在非主线程中使用,记得使用异步方式,以避免阻塞UI。 异步加载组件是处理大...

    Jquery+Ajax+Php+Mysql异步刷新

    通过创建XMLHttpRequest对象,Ajax可以向服务器发送异步请求,获取新数据,然后在客户端用JavaScript处理这些数据并更新DOM。在jQuery中,我们可以使用$.ajax()方法或者更简单的$.get()和$.post()方法来发起Ajax请求...

    异步请求分页示例:handler.ashx + $.ajax() + Json + 分页处理

    这个示例结合了`handler.ashx`处理程序、`$.ajax()`方法、JSON数据格式以及前端分页处理,构建了一个高效的分页系统。下面我们将详细探讨这些知识点。 首先,`handler.ashx`是一种基于ASP.NET的HTTP Handler,它...

    【源码】数据可视化:基于 Pyecharts + PyQT 实现的动态实时【拖拉拽】大屏范例1-互联网企业数据分析.zip

    该压缩包包含的是一个使用Python和Echarts库构建的数据可视化项目,主要目标是实现一个动态实时的、支持拖拉拽功能的...开发者可以借此学习到数据可视化、Python GUI编程、数据库操作以及前后端交互等多个方面的知识。

    JSP动态网站开发 第1章 JSP使用基础第2章 HTML与CSS第3章 JavaScript脚本编程…………

    在IT领域,JSP(JavaServer Pages)是一种用于创建动态网页的技术,它是Java平台上的一个重要组成部分,主要用于构建基于Web的应用程序。本教程分为三个主要章节,涵盖了从基础到进阶的JSP、HTML和CSS以及JavaScript...

    JavaScript:异步编程:回调函数与Promise

    ### JavaScript:异步编程:回调函数与Promise #### 一、JavaScript基础知识回顾 **1. 变量与数据类型** 在JavaScript中,变量是用于存储数据值的基本单元。JavaScript支持以下几种基本的数据类型: - `...

    Javascript异步编程(英文版)

    异步编程技术使得Web应用能够同时处理多个请求,无需等待一个操作完成后再进行下一个操作,从而实现更流畅的用户体验。 ### 异步编程的挑战与解决方案 异步编程虽然强大,但也带来了挑战,如代码可读性降低、错误...

    零基础学JavaScript基础教程PPT+视频动画+源代码

    JavaScript是一种广泛应用于网页和互联网应用的编程语言,它使得网页具备了动态交互的能力。这个"零基础学JavaScript基础教程PPT+视频动画+源代码"的资源包为初学者提供了一个全面的学习路径,通过PPT、视频动画以及...

    基于jsp+servlet+Ajax异步登陆模拟web项目

    【基于jsp+servlet+Ajax异步登陆模拟web项目】是一个典型的Web开发实例,它整合了三种核心技术:JavaServer Pages(JSP)、Servlet以及Asynchronous JavaScript and XML(Ajax)。这个项目的核心目的是实现用户登录...

    全套百度云教程:python基础+进阶+项目篇 (含Django和Tornado)

    Tornado是一个异步Web服务器和异步网络库,非常适合用于构建实时Web服务和高并发应用。 1. **Tornado安装与快速上手**:安装Tornado、创建简单的Web应用。 2. **异步处理**:理解异步IO、非阻塞操作、回调函数等。 ...

    JavaScript实用知识库分享

    本篇文章将详细介绍JavaScript的实用知识库,涵盖了JavaScript的基础知识、Ajax、DOM操作、事件处理、数据存储、异步编程、正则表达式、ES6、回调函数、Web API、动画库、设计模式等多方面的知识点。 JavaScript...

    Html+Css+Javascript从入门到精通.pdf

    - **框架内使用JavaScript**:实现动态更新框架内容。 - **Cookies管理**:设置、读取和删除Cookies。 **第二十二章:建立日历控件** - **综合应用**:利用JavaScript制作一个功能完善的日历控件。 #### 第四部分...

    《html+css+javascript 网页制作案例教程》源代码

    JavaScript是前端开发的核心语言,用于实现动态交互和功能。它可以操作DOM(Document Object Model),即HTML文档的对象表示,进行元素的增删改查。JavaScript还可以处理用户事件,如点击、滚动等,以及通过Ajax进行...

    JavaScript书籍(JavaScript模式.pdf+JavaScript高效图形编程.pdf)

    5. **异步编程**:介绍回调函数、Promise、async/await等处理异步操作的方法。 而《JavaScript高效图形编程》这本书则可能专注于JavaScript在图形和动画方面的应用,可能涵盖: 1. **Canvas API**:Canvas是HTML5...

    taobao:基于原生html + css + js开发淘宝首页

    3. CSS动画和过渡:学习如何通过CSS创建动态效果,提升用户体验。 4. JavaScript基础:理解JavaScript基本语法,以及如何操作DOM来改变页面内容。 5. JavaScript事件处理:学习如何添加事件监听器,响应用户操作。 6...

    Head First JavaScript(17年第1版).zip

    1 JavaScript速览:进入JavaScript的世界 阅读 2 编写代码:更进一步 3 函数简介:养成函数思维 4 让数据排排坐:数组 5 理解对象:对象镇之旅 6 与网页交互:了解DOM 7 类型、相等、转换等:系统...

    基于Servlet+jsp+mysql开发javaWeb学生成绩管理系统

    系统环境:Windows10 开发工具:Eclipse4.8.0 / MyEclipse2014 / IDEA 编码集:UTF-8 Java版本:JDK 1.8 服务器:tomcat 8.0 数据库:MySQL 5.5 系统采用技术:Servlet+jsp+mysql+jQuery+bootstrap+面向接口编程 ...

    javascript异步调用库

    实现javascript异步调用 API: window.asyncall(function/functionName[,args,...][,function callback]) 参数说明: function/functionName:方法或方法名称 args:目标方法参数 callback:回调函数...

    程序天下:JavaScriptPPt+代码

    3. 动态更新页面:介绍如何使用JavaScript动态创建和修改DOM元素,实现页面交互效果。 **第五章:高级特性与实践** 最后,这一章将涵盖一些JavaScript的高级话题: 1. 异步编程:讲解回调函数、Promise和async/...

Global site tag (gtag.js) - Google Analytics