☆藍色夢想☆

          世界總是反反覆覆錯錯落落地飄去 來不及嘆息 生活不是平平淡淡從從容容的東西 不能放棄
          posts - 57, comments - 5, trackbacks - 0, articles - 0
          傳統(tǒng)上,我們?yōu)g覽網(wǎng)頁,如果加入最新的數(shù)據(jù).只能是等我們重新向服務(wù)器端請求時才能顯示出來.
          但是,對于一些時效性很強的網(wǎng)站.傳統(tǒng)的這種做法是不能滿足的.
          我們可以讓程序自動刷新.定時向服務(wù)器請求數(shù)據(jù).5秒取一次數(shù)據(jù),10秒取一次數(shù)據(jù).
          利用XMLHTTP發(fā)出請求并取得數(shù)據(jù).傳到客戶端,客戶端重新組織并顯示數(shù)據(jù).

          demo.htm    前臺顯示.

          <script language="JavaScript">
          function GetResult()
          {
          /*
          *--------------- GetResult() -----------------
          * GetResult()
          * 功能:通過XMLHTTP發(fā)送請求,返回結(jié)果.
          * 參數(shù):str,字符串,發(fā)送條件.
          * 實例:GetResult();
          *--------------- GetResult() -----------------
          */
          var oBao = new ActiveXObject("Microsoft.XMLHTTP");
          //特殊字符:+,%,&,=,?等的傳輸解決辦法.字符串先用escape編碼的.
          //Update:2004-6-1 12:22
          oBao.open("POST","Server.asp",false);
          oBao.send();
          //服務(wù)器端處理返回的是經(jīng)過escape編碼的字符串.
          var strResult = unescape(oBao.responseText);
          //將字符串分開.
          var arrResult = strResult.split("###");
          RemoveRow(); //刪除以前的數(shù)據(jù).
          //將取得的字符串分開,并寫入表格中.
          for(var i=0;i<arrResult.length;i++)
          {
          arrTmp = arrResult[i].split("@@@");
          num1 = arrTmp[0]; //字段num1的值
          num2 = arrTmp[1]; //字段num2的值
          row1 = tb.insertRow();
          cell1 = row1.insertCell();
          cell1.innerText = num1;
          cell2 = row1.insertCell();
          cell2.innerText = num2;
          }
          }

          function RemoveRow()
          {
          //保留第一行表頭,其余數(shù)據(jù)均刪除.
          var iRows = tb.rows.length;
          for(var i=0;i<iRows-1;i++)
          {
          tb.deleteRow(1);
          }
          }

          function MyShow()
          {
          //2秒自動刷新一次,2秒取得一次數(shù)據(jù).
          timer = window.setInterval("GetResult()",2000);
          }
          </script>

          <body onload="MyShow()">
          <p>
          </p>
          <table width="47%" height="23"border="0" cellpadding="1" cellspacing="0" id="tb">
          <tr>
          <td>num1</td>
          <td>num2</td>
          </tr>
          </table>


          Server.asp  后臺讀取數(shù)據(jù)

          <% @Language="JavaScript" %>
          <%
          function OpenDB(sdbname)
          {
          /*
          *--------------- OpenDB(sdbname) -----------------
          * OpenDB(sdbname)
          * 功能:打開數(shù)據(jù)庫sdbname,返回conn對象.
          * 參數(shù):sdbname,字符串,數(shù)據(jù)庫名稱.
          * 實例:var conn = OpenDB("database.mdb");
          *--------------- OpenDB(sdbname) -----------------
          */
          var connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath(sdbname);
          var conn = Server.CreateObject("ADODB.Connection");
          conn.Open(connstr);
          return conn;
          }
          var sResult = new Array();
          var oConn = OpenDB("data.mdb");
          //特殊字符:+,%,&,=,?等的傳輸解決辦法.客戶端字符是經(jīng)過escape編碼的
          //所以服務(wù)器端先要經(jīng)過unescape解碼.
          //Update:2004-6-1 12:22
          var sql = "select num1,num2 from nums order by id";
          var rs = oConn.Execute(sql);
          while(!rs.EOF)
          {
          //一條記錄用"###"隔開.每列數(shù)據(jù)用"@@@"隔開. 這是以只有兩個列數(shù)據(jù)的情況.
          sResult[sResult.length] = rs("num1").Value + "@@@" + rs("num2").Value
          rs.MoveNext();
          }
          //escape解決了XMLHTTP。中文處理的問題.
          Response.Write(escape(sResult.join("###")));
          %>


          數(shù)據(jù)庫data.mdb
          表 nums
          id,自動編號
          num1,文本
          num2,文本

          測試數(shù)據(jù)

          id      num1    num2
          1       20.70   20.810
          2       10.5    20.5
          3       12.3    300
          4       132     323
          5       563     56
          6       20      10

          利用XMLHTTP實現(xiàn)的二級連動Select
          利用XMLHTTP無刷新添加數(shù)據(jù)之Post篇

          利用XMLHTTP無刷新添加數(shù)據(jù)之Get篇

          主站蜘蛛池模板: 张家港市| 青田县| 扎鲁特旗| 巴楚县| 花垣县| 历史| 承德市| 翁源县| 泗水县| 偃师市| 安达市| 昭通市| 明水县| 平和县| 镇平县| 罗城| 阿图什市| 三原县| 河池市| 偃师市| 会宁县| 江孜县| 通化县| 宜君县| 泊头市| 花垣县| 曲水县| 台北县| 临泉县| 莱芜市| 青川县| 新和县| 昌江| 维西| 虎林市| 土默特左旗| 永登县| 武宣县| 常熟市| 万载县| 新巴尔虎左旗|