asp.net

位置:IT落伍者 >> asp.net >> 浏览文章

ASP.NET中使用无框架的Ajax实例


发布日期:2024年02月06日
 
ASP.NET中使用无框架的Ajax实例

我们需要两个页面aaspxbaspxa页面代码如下(就用最常见的两个下拉列表连动的例子)

<body>    <form id=Form method=post runat=server>    <select id=AList onchange=SetBList()>        <option value=>A</option>        <option value=>B</option>        <option value=>C</option>    </select>    <select id=BList></select>    </form> </body>

当a页面触发onchange事件后我们进入写在a页面的SetBList()方法中这里将完整的js列出来

<script language=javascript>var xmlHttp;function SetBList() {    var avalue = documentgetElementById(AList)value;    var url = baspx?Avalue= + avalue;    createXMLHttpRequest();  // 创建xmlHttp对象    xmlHttponreadystatechange = handleStateChange;  // 当xmlHttp状态码发生改变时调用handleStateChage方法    xmlHttpopen(GET url true);   // GET方法发送请求    xmlHttpsend(null);}function BListInitial() {    // 先清空一下BList的option    clearBList();    var blist = documentgetElementById(BList);  // 获取BList对象    var rs = xmlHttpresponseXMLgetElementsByTagName(City);  // 从返回xml文档中读取<City>标签的数据    // 这个循环取值的地方卡了我一会将xmlHttpresponseXML创建成一个xml文档然后找读文档的方法但问题是不同浏览器创建xml文档的方法不一样    for(var i=;i<rslength;i++) {        var option = documentcreateElement(OPTION);        optiontext = rs[i]getElementsByTagName(CityName);        optionvalue = rs[i]getElementsByTagName(CityCode);        blistoptionsadd(option);    }}function clearBList() {    var ven = documentgetElementById(VendorList);    while(venoptionslength > )        venremoveChild(venchildNodes[]);}function handleStateChange() {    if(xmlHttpreadyState == ) {        if(xmlHttpstatus == ) {            BListInitial();        }    }}function createXMLHttpRequest() {    // IE    if (windowActiveXObject) {        xmlHttp = new ActiveXObject(MicrosoftXMLHTTP);    }     // Mozilla    else if (windowXMLHttpRequest) {        xmlHttp = new XMLHttpRequest();    }}</script>

baspx页面将html部分全部删除仅仅留一行

<%@ Page language=c# Codebehind=baspxcs AutoEventWireup=false Inherites=TestAjax %>

原因是我们a页面要求返回的xml文档因此我们将Html标签部分删除然后在b页面的Page_Load方法中对数据库进行操作然后数据写成xml的格式例如

// 数据库操作得到DataTable dtstring xml = <Data>;foreach(DataRow row in dtRows)  {    xml += <City>;    xml += <CityName> + row[CityName] + </CityName>;    xml += <CityCode> + row[CityCode] + </CityCode>;    xml += </City>;}xml += </Data>;//  清页面格式写xmlResponseClearContent();ResponseCacheSetNoStore();ResponseContentType = text/xml;ResponseContentEncoding = SystemTextEncodingUTF;ResponseWrite(xml);

在整体运行之前可以先将b页面测试一下

如果得到类似如下结果则说明数据部分是没问题的

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

               

上一篇:在asp.net下实现checkbox全选

下一篇:ASP.NET中使用AJAX的简单方法