asp.net+xml實現無重新整理調資料

來源:互聯網
上載者:User
    這個實列只適合操作小資料量時使用,如果調用大量資料會出現很長的延時。同時加入識別id(CallBackid),加入這個id的作用在於如果頁面上有多處需要調用時,用來區分資料,否則會引起資料衝突。下面是代碼:
js操作類(可單獨封裝成js類檔案):var xmlhttp;
var CallBackid ;//返回標誌
//xml函數部分
function CreateXmlHttpRequest()
 {
                                                            // 使用 try 來捕獲建立失敗,再換個方法來建立
 try {                                                  // 如果不成功,那麼嘗試在較新 IE 裡的方式
 xmlhttp=new ActiveXObject("MSXML2.XMLHTTP");
 }
 catch(e) {
 try {
  // 失敗則嘗試使用較老版本 IE 裡的方式 
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }
 catch(e1) {                                   
  xmlhttp=false;
 }
 }
 if (!xmlhttp) {                                            // 如果建立 XMLHttpRequest 對象失敗,那麼提醒訪問者該頁面可能無法正確訪問
 alert("Xml檔案建立失敗!");
 return xmlhttp;
 }
}

 function GetXmlHttp(url,tk)
 {    
    CallBackid = tk;//
 if (url == null || url == "") return null;
  var xmldom = new ActiveXObject("Microsoft.XMLDOM");
  CreateXmlHttpRequest();
  xmlhttp.open("GET",url,false,"","");
  xmlhttp.onreadystatechange = startCallback;
  xmlhttp.send(null);      // 發送請求,因為是GET,所以send的內容為null

  }
   // 通過xmldom操作結果
  // 因為使用非同步方式所以要在 XMLHttpRequest 對象的狀態改變時做相應的處理
function startCallback() 
{

if(xmlhttp.readyState==4)                     // 如果 XMLHttpRequest 的狀態為4,應該是ready來的,那麼繼續處理
{                            
  if(xmlhttp.status==200)                    // 需要判斷返回狀態是否為200 OK,有些情況如檔案不存在,就為返回404
  {                             

    switch(CallBackid )
  {
   case 1:
   xmldom = xmlhttp.responseXML.documentElement;//每個引用定義的類名要區分開,要不資料會重複
     //需要調用的函數名
   break;
    
    case 2:
    VehDataxmldom = xmlhttp.responseXML.documentElement;
       //需要調用的函數名
      break;
      
    case 3:
    Aralmxmldom = xmlhttp.responseXML.documentElement;
       //需要調用的函數名
      break;
      
    default:
    break;
   }

   }
   else 
   {
 alert("HTTP error: "+xmlhttp.status);
   }

 }

}

執行資料庫查詢的aspx頁面(此頁面非引入js檔案的頁面,它只是調用資料的中間頁),即url中cs檔案包含內容

        protected void Page_Load(object sender, EventArgs e)
        {
            GetData();
        }
        protected void GetData()
        {
            SqlServerDataBase db = new SqlServerDataBase();
            DataSet dt = db.Select("自己的sql語句") ", null);
            Response.ContentType = "text/xml";
            Response.Write(dt.GetXml());
            Response.End();

        }

以上代碼在點擊按鈕時觸發,如果需要頁面載入時調用或每隔一段時間就去調用即時資料,需在引用該js檔案的頁面寫如下代碼

<script type="text/javascript" language="javascript">
function pageonloadxml()
{
GetXmlHttp(aa.aspx',3);
GetXmlHttp(bb.aspx',1);

setTimeout("pageonloadxml();",10000);


}

</script>

<body  onload="pageonloadxml();" >

當然,自己還可以再寫一些控制函數,來控制頁面的重新整理或資料的回調。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.