日期:2014-05-16 浏览次数:20474 次
最近项目中有这样一个需求:
页面动态刷新获取数据库中符合条件的数据的下载链接状态:如果已有可下载链接,就显示链接供用户下载,并显示服务器端当前时间;没有就继续动态获取。
?
?
实现功能:
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