c#.net下简单的Ajax例子

我们需要两个页面 a.aspx b.aspx a 页面代码如下(就用最常见的,两个下拉列表连动的例子):
< body >
    
< form id ="Form1" method ="post" runat ="server" >
    
< select id ="AList" onchange ="SetBList()" >
        
< option value ="0" > A </ option >
        
< option value ="1" > B </ option >
        
< option value ="3" > C </ option >
    
</ select >
    
< select id ="BList" ></ select >
     
</ form >
  
</ body >
a 页面触发 onchange 事件后,我们进入写在 a 页面的 SetBList() 方法中,这里将完整的js列出来:
< script language = " javascript " >
var xmlHttp;

function SetBList() ...{
    
var avalue = document.getElementById( " AList " ).value;

    
var url = " b.aspx?Avalue= " + avalue;
     createXMLHttpRequest();  
// 创建xmlHttp对象
     xmlHttp.onreadystatechange = handleStateChange;   // 当xmlHttp状态码发生改变时,调用handleStateChage方法
     xmlHttp.open( " GET " , url, true );    // GET方法发送请求
     xmlHttp.send( null );
}

function BListInitial() ...{
    
// 先清空一下BList的option
     clearBList();

    
var blist = document.getElementById( " BList " );   // 获取BList对象
     var rs = xmlHttp.responseXML.getElementsByTagName( " City " );   // 从返回xml文档中,读取<City>标签的数据
     // 这个循环取值的地方,卡了我一会,将xmlHttp.responseXML创建成一个xml文档,然后找读文档的方法,但问题是不同浏览器创建xml文档的方法不一样
     for ( var i = 0 ;i < rs.length;i ++ ) {
        
var option = document.createElement( " OPTION " );
         option.text
= rs[i].getElementsByTagName( " CityName " );
         option.value
= rs[i].getElementsByTagName( " CityCode " );
         blist.options.add(option);
     }
}

function clearBList() ...{
    
var ven = document.getElementById( " VendorList " );
    
while (ven.options.length > 0 )
         ven.removeChild(ven.childNodes[
0 ]);
}

function handleStateChange() ...{
    
if (xmlHttp.readyState == 4 ) ...{
        
if (xmlHttp.status == 200 ) ...{
             BListInitial();
         }
     }
}

function createXMLHttpRequest() ...{
    
// IE
     if (window.ActiveXObject) ...{
         xmlHttp
= new ActiveXObject( " Microsoft.XMLHTTP " );
     }
    
// Mozilla
     else if (window.XMLHttpRequest) ...{
         xmlHttp
= new XMLHttpRequest();
     }
}
</ script >
b.aspx页面将html部分全部删除,仅仅留一行:
<%@ Page language="c#" Codebehind="b.aspx.cs" AutoEventWireup="false" Inherites="Test.Ajax" %>
原因是我们a页面要求返回的xml文档,因此,我们将Html标签部分删除。然后在b页面的Page_Load方法中,对数据库进行操作,然后数据写成xml的格式,例如
// 数据库操作,得到DataTable dt

string xml = "<Data>";
foreach(DataRow row in dt.Rows)   {
     xml
+= "<City>";
     xml
+= "<CityName>" + row["CityName"] + "</CityName>";
     xml
+= "<CityCode>" + row["CityCode"] + "</CityCode>";
     xml
+= "</City>";
}
xml
+= "</Data>";

//   清页面格式,写xml
Response.ClearContent();
Response.Cache.SetNoStore();
Response.ContentType
= "text/xml";
Response.ContentEncoding
= System.Text.Encoding.UTF8;
Response.Write(xml);

在整体运行之前可以先将b页面测试一下,如果得到类似如下结果,则说明,数据部分是没问题的

- <Data>
     -
<Vendor>
        
<VendorId>7</VendorId>
       
<VendorName>千千</VendorName>
   
</Vendor>
</Data>

转载于:https://www.cnblogs.com/hyfei0315/archive/2008/07/15/1243388.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值