日期:2014-05-16  浏览次数:20474 次

js取服务器端时间,并提供动态下载链接

最近项目中有这样一个需求:

页面动态刷新获取数据库中符合条件的数据的下载链接状态:如果已有可下载链接,就显示链接供用户下载,并显示服务器端当前时间;没有就继续动态获取。

?

?

实现功能:

js取服务器端时间,并动态检索下载链接,显示到页面供用户下载。

?

<script language="javascript">
var xmlhttp = null;
var interval = null;
var timeTimeout = null;
var statusValue = "";
var rtnData = new Array();
var btype;
var divContent = "";


/**
* 时间对象的格式化;
*/
Date.prototype.format = function(format){
 /*
  * eg:format="yyyy-MM-dd hh:mm:ss";
  */
 var o = {
  "M+" :  this.getMonth()+1,  //month
  "d+" :  this.getDate(),     //day
  "h+" :  this.getHours(),    //hour
  "m+" :  this.getMinutes(),  //minute
  "s+" :  this.getSeconds(), //second
  "q+" :  Math.floor((this.getMonth()+3)/3),  //quarter
  "S"  :  this.getMilliseconds() //millisecond
 }
  
 if(/(y+)/.test(format)) {
 	format = format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
 }
 
   for(var k in o) {
    if(new RegExp("("+ k +")").test(format)) {
      format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
    }
   }
 return format;
}


function getFile(downUrl){
	//alert('** downUrl = <%=path%>/jsp/DataRequest/downloadFile.jsp?downUrl='+ downUrl);
	window.open("<%=path%>/jsp/DataRequest/downloadFile.jsp?downUrl="+ downUrl);
}


function getOs(){ 
	var OsObject = ""; 
	if(navigator.userAgent.indexOf("MSIE")>0) {
		return "MSIE"; //IE浏览器
	} 
	if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){ 
		return "Firefox"; //Firefox浏览器
	} 
	if(isSafari=navigator.userAgent.indexOf("Safari")>0) { 
		return "Safari"; //Safan浏览器
	} 
	if(isCamino=navigator.userAgent.indexOf("Camino")>0){ 
		return "Camino"; //Camino浏览器
	} 
	if(isMozilla=navigator.userAgent.indexOf("Gecko/")>0){ 
		return "Gecko"; //Gecko浏览器
	}
}

//页面动态调用该函数,动态获取DB中下载链接
function loadXMLDoc(xmlName,dataTypeId){
   	var ivkUrl = "<%=path%>/jsp/DataRequest/autoFindRtnDataGTS.jsp?xmlName=" + xmlName + "&"+ Math.random();
	  //alert("** ivkUrl = "+ ivkUrl);
	  
	  if (window.XMLHttpRequest){
	  	xmlhttp=new XMLHttpRequest();
	  }else if (window.ActiveXObject){
	   	xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	  }	  
	  
	   if (xmlhttp){
	   		xmlhttp.open("GET",ivkUrl,false);
	   		
	   		btype = getOs();
	   		if(btype != "Firefox"){
	   			xmlhttp.onreadystatechange = state_Change;
	    	}
	    	xmlhttp.send(null);
	    	
	   		if(btype == "Firefox"){
				 	updatePageGTS();
				}
	    
	   }else{
	   	alert("Your browser does not support XMLHTTP");
	   }
	   
	  interval = window.setTimeout("loadXMLDoc('<%=xmlName%>','<%=dataTypeId%>')", 10000);
	  //alert("** interval = "+ interval);
	  	
		//0: 等待;2:数据超大;3:无数据;99:数据获取成功
		if(statusValue < 0){
			window.clearTimeout(interval);
		}else if(statusValue == 2){
			window.clearTimeout(interval);
		}else if(statusValue == 3){
			window.clearTimeout(interval);
		}else if(statusValue == 99){
			window.clearTimeout(interval);
		}
 	}	
 	
 	
 	function state_Change(){
		var dataTypeId = "<%=dataTypeId%>";
						 		
		if (xmlhttp.readyState==4){
			if (xmlhttp.status==200){
				updatePageGTS();
			}else{
				//alert("Problem retrieving XML data");
			}
		}
	}
	
	//动态获取下载状态及下载链接地址
	function updatePageGTS(){
		//alert('updatePageGTS()');
		
		rtnData = eval(xmlhttp.responseText);//获取服务端返回数据(下载链接)
		if(rtnData[0]){
			statusValue = rtnData[0].reqStatus;
			
			if(statusValue < 0){
					document.getElementById("statusGTS").innerHTML = "<strong>Exception</strong>";
					
			}else if(statusValue == 0){
					document.getElementById("statusGTS").innerHTML = "<strong>Being processed</strong>";
								
			}else if(statusValue == 1){
					document.getElementById("statusGTS").innerHTML = "<strong>Begin zip</strong>";
					
			}else if(statusValue == 2){
					document.getElementById("statusGTS").innerHTML = "<strong>The data