天天看點

jsp 異步加載 重新整理時間

即:根據時間僅重新整理網頁部分内容

下面是異步顯示系統時間的例子

client.jsp

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<script type="text/javascript">

function makeRequest(url) {

 alert("1111");

 //alert("my GOD!");

 http_request = false;

 if (window.XMLHttpRequest) {

  http_request = new XMLHttpRequest();

  if (http_request.overrideMimeType){

   http_request.overrideMimeType('text/xml');

  }

 } else if (window.ActiveXObject) {

  try{

   http_request = new ActiveXObject("Msxml2.XMLHTTP");

  } catch (e) {

   try {

    http_request = new ActiveXObject("Microsoft.XMLHTTP");

   } catch (e) {

   }

 }

 if (!http_request) {

  alert("您的浏覽器不支援目前操作,請使用 IE 5.0 以上版本!");

  return false;

//定義頁面調用的方法init,不是init();沒有();

 http_request.onreadystatechange = init;

 http_request.open('GET', url, true);

//禁止IE緩存

 http_request.setRequestHeader("If-Modified-Since","0");

//發送資料

 http_request.send(null);

//每60秒重新整理一次頁面

 setTimeout("makeRequest('"+url+"')", 1000);

function init() {

 if (http_request.readyState == 4) {

  if (http_request.status == 0 || http_request.status == 200) {

   var result = http_request.responseText;

   if(result==""){

    result = "系統時間擷取失敗";

   document.getElementById ("sysTimeShow").innerHTML="系統時間 :"+result;

  } else {//http_request.status != 200

   alert("請求失敗!");

}

 </script>

</head>

<body onload="makeRequest('getSystemTime.jsp')">

         <div id="sysTimeShow"></div>

</body>

</html>

getSystemTime.jsp

<%@ page language="java"  %>

<%@ page contentType="text/html;charset=GB2312" %>

<%@ page import="java.util.Date"%>

<%@ page import="java.sql.Timestamp"%>

<%@ page import="java.io.IOException"%>

<%

Date d = new Date();

Timestamp ts = new Timestamp(d.getTime());

String result = ts.toString().substring(0,19);

out.write(result,0,result.length());

%>

**********************************失眠、憂郁、焦慮的分割線*******************************

下面是前台架構extjs中使用異步重新整理的方法:

 var task={run:function(){ 

    //重新整理的内容,如:更新textfield的value等    timearea.setValue(time);

   },interval:1000};//1000代表一秒重新整理一次

           var taskRunner=new Ext.util.TaskRunner();

           taskRunner.start(task);

  });

*****************************************睡醒了的分割線************************************

其實如果在extjs架構下如果想動态顯示一個document節點  那麼可以動态建立一個,

把它作為item來添加即可。

并且用上述方法指派。

例子如下:(該例子用于在工具欄中動态顯示目前系統時間)

var barr = new Ext.Toolbar({

    height : 30

});

var doc = document.createElement('time');

barr.addItem(doc);

var now= new Date();

    var year=now.getYear();

    var month=now.getMonth()+1;

    var day=now.getDate();

    var hour=now.getHours();

    var minute=now.getMinutes();

    var second=now.getSeconds();

    var time = year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second;

//上面是在擷取目前時間

    doc.innerHTML(time);    

},interval:1000};

var taskRunner=new Ext.util.TaskRunner();

taskRunner.start(task);