☆藍色夢想☆

          世界總是反反覆覆錯錯落落地飄去 來不及嘆息 生活不是平平淡淡從從容容的東西 不能放棄
          posts - 57, comments - 5, trackbacks - 0, articles - 0

          利用XMLHTTP無刷新自動實時更新數據

          Posted on 2005-12-08 10:32 ☆藍色夢想☆ 閱讀(410) 評論(0)  編輯  收藏 所屬分類: AJAX
          傳統上,我們瀏覽網頁,如果加入最新的數據.只能是等我們重新向服務器端請求時才能顯示出來.
          但是,對于一些時效性很強的網站.傳統的這種做法是不能滿足的.
          我們可以讓程序自動刷新.定時向服務器請求數據.5秒取一次數據,10秒取一次數據.
          利用XMLHTTP發出請求并取得數據.傳到客戶端,客戶端重新組織并顯示數據.

          demo.htm    前臺顯示.

          <script language="JavaScript">
          function GetResult()
          {
          /*
          *--------------- GetResult() -----------------
          * GetResult()
          * 功能:通過XMLHTTP發送請求,返回結果.
          * 參數:str,字符串,發送條件.
          * 實例:GetResult();
          *--------------- GetResult() -----------------
          */
          var oBao = new ActiveXObject("Microsoft.XMLHTTP");
          //特殊字符:+,%,&,=,?等的傳輸解決辦法.字符串先用escape編碼的.
          //Update:2004-6-1 12:22
          oBao.open("POST","Server.asp",false);
          oBao.send();
          //服務器端處理返回的是經過escape編碼的字符串.
          var strResult = unescape(oBao.responseText);
          //將字符串分開.
          var arrResult = strResult.split("###");
          RemoveRow(); //刪除以前的數據.
          //將取得的字符串分開,并寫入表格中.
          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()
          {
          //保留第一行表頭,其余數據均刪除.
          var iRows = tb.rows.length;
          for(var i=0;i<iRows-1;i++)
          {
          tb.deleteRow(1);
          }
          }

          function MyShow()
          {
          //2秒自動刷新一次,2秒取得一次數據.
          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  后臺讀取數據

          <% @Language="JavaScript" %>
          <%
          function OpenDB(sdbname)
          {
          /*
          *--------------- OpenDB(sdbname) -----------------
          * OpenDB(sdbname)
          * 功能:打開數據庫sdbname,返回conn對象.
          * 參數:sdbname,字符串,數據庫名稱.
          * 實例: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");
          //特殊字符:+,%,&,=,?等的傳輸解決辦法.客戶端字符是經過escape編碼的
          //所以服務器端先要經過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)
          {
          //一條記錄用"###"隔開.每列數據用"@@@"隔開. 這是以只有兩個列數據的情況.
          sResult[sResult.length] = rs("num1").Value + "@@@" + rs("num2").Value
          rs.MoveNext();
          }
          //escape解決了XMLHTTP。中文處理的問題.
          Response.Write(escape(sResult.join("###")));
          %>


          數據庫data.mdb
          表 nums
          id,自動編號
          num1,文本
          num2,文本

          測試數據

          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實現的二級連動Select
          利用XMLHTTP無刷新添加數據之Post篇

          利用XMLHTTP無刷新添加數據之Get篇

          主站蜘蛛池模板: 黄龙县| 湖南省| 开鲁县| 会东县| 沅江市| 扎鲁特旗| 铜川市| 宁晋县| 南澳县| 陇川县| 丰原市| 额尔古纳市| 宜都市| 大冶市| 德安县| 宁化县| 葫芦岛市| 浦城县| 台安县| 泰兴市| 新和县| 崇州市| 永城市| 博野县| 三原县| 长垣县| 漾濞| 衡阳县| 塔城市| 华坪县| 海林市| 大方县| 健康| 金乡县| 汉中市| 新巴尔虎右旗| 虎林市| 和林格尔县| 安乡县| 武山县| 方山县|