asp.net+xml实现无刷新调数据

    这个实列只适合操作小数据量时使用,如果调用大量数据会出现很长的延时。同时加入识别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(); "   >
当然,自己还可以再写一些控制函数,来控制页面的刷新或数据的回调。

转载于:https://www.cnblogs.com/jeasonlee/archive/2008/05/02/1179394.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值