下面分别是用DOM和HTTP实现AJAX的简单实例,希望对大家有所帮助!

一.JS文件

//LoadXml函数
function __ATLoadXml(vstrReq)
{
var root, source;  
var sT;

status = 'searching, please wait....';
source = new ActiveXObject('Microsoft.XMLDOM');
source.async = false;
source.load(vstrReq);
//Check to see if there was an error parsing the response from the server
if (source.parseError != 0)
{
   sT = 'XML Error...<br>reason:' + source.parseError.reason + '<br>';
   sT += 'errorCode:' + source.parseError.errorCode + '<br>';
   sT += 'filepos:' + source.parseError.filepos + '<br>';
   sT += 'line:' + source.parseError.line + '<br>';
   sT += 'linepos:' + source.parseError.linepos + '<br>';
   sT += 'reason:' + source.parseError.reason + '<br>';
   sT += 'srcText:' + source.parseError.srcText + '<br>';
   sT += '<pre>' + source.xml + '</pre><br>';
   alert(sT);
   status = 'XML Error!';
}
else
{
   root = source.documentElement;   //Get a reference to root XML object
   status = 'Done';
   return root;
}
}

//用DOM—XML方式帮定下拉框
function GetDom_Dt()
{
var strpass="Default.aspx?senderCtl=DOM_dt";
var objDrp=document.getElementById("dpDom");
   var vntRetArray=__ATLoadXml(strpass)
        if(typeof(vntRetArray)=='object')
        {
             BindListCtl(objDrp,vntRetArray.getElementsByTagName('Dom_Dt'),true);
        }
}

//绑定下拉框函数
function BindListCtl(oCtlDrp,XmlNodeList,IsFirstSpace)
{
    oCtlDrp.options.length=0;
    if(IsFirstSpace)
    {
        oCtlDrp.options.add(new Option('',''));
     }
   
    for(var i=0;i<XmlNodeList.length;i++)
    {
        var node=XmlNodeList(i).childNodes;
        oCtlDrp.options.add(new Option(node.item(1).text , node.item(0).text));
     }
}

//初始化HTTP對象
function GetXmlHttpRequest()
{
    var A=null;
    try
    {
        A=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e)
    {
        try
        {
            A=new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(oc)
        {
            A=null;
        }
    }
    if(!A && typeof XMLHttpRequest != "undefined")
    {
        A=new XMLHttpRequest();
    }
    return A;
}

//用HTTP方式绑定下拉框
function GetHTTP()
{
   document.getElementById("dpHttp").options.length=0;
    var xmlhttp = GetXmlHttpRequest();
   var weburl="Default.aspx?senderCtl=Http_string";
       xmlhttp.open("Post",weburl,false);
       xmlhttp.send("");
   var returns=xmlhttp.responseText;  
    if(returns!=""&&returns!=null)
    {
      var tempxmlRtn=returns.replace('<ID>','').replace('</ID>','');
      var arrayList =tempxmlRtn.split("**");
      var arrayValue =new Array();
      for(i=0;i<arrayList.length;i++)
        {
            arrayValue=arrayList[i].split("##");
            document.getElementById("dpHttp").options[i+1]=new Option(arrayValue[1],arrayValue[0]);
            arrayValue[0]="";
            arrayValue[1]="";
        }
     document.getElementById("dpHttp").options[0]=new Option("","");
     document.getElementById("dpHttp").value="";
    }
}

//Dom读曲XML的节点值
function GetDom_Nodes()
{
     document.getElementById("txtDom").value="";
     var strpass="Default.aspx?senderCtl=DOM_Node";
     var vntRetArray=__ATLoadXml(strpass);
        if(typeof(vntRetArray)=='object')
        {
          var strState=fnGetSingleNodeValue(vntRetArray,"//bookstore//book//author");   
           document.getElementById("txtDom").value=strState;
        }
}

//读取节点的函数
function fnGetSingleNodeValue(XmlDoc,NodeName)
{
    var strResult="";
    try
    {
     strResult=XmlDoc.selectSingleNode(NodeName).text;   
    }
   catch(oc)
   {  
     alert(e.message);
   }
   return strResult;
}

//处理AJAX类型函数
function GetType()
{
if(document.getElementById("rdoA").checked==true)
{
    GetDom_Dt();
    document.getElementById("txtDom").value="";
    document.getElementById("dpHttp").options.length=0;
    document.getElementById("dpHttp").options.add(new Option('',''));
}
else if(document.getElementById("rdoB").checked==true)
{

   GetDom_Nodes()
   document.getElementById("dpDom").options.length=0;
    document.getElementById("dpDom").options.add(new Option('',''));
    document.getElementById("dpHttp").options.length=0;
    document.getElementById("dpHttp").options.add(new Option('',''));
}

else if(document.getElementById("rdoC").checked==true)
{
      GetHTTP();
      document.getElementById("dpDom").options.length=0;
      document.getElementById("dpDom").options.add(new Option('',''));
      document.getElementById("txtDom").value="";
   }
}

二.前台文件(.aspx)

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<html>
<head id="Head1" runat="server">
    <title>未命名頁面</title>
      <script language="javascript" type="text/jscript" src="ajax.js" ></script>
</head>
<body>
    <form id="form1" runat="server" method="post">
        <table>
            <tr>
                <td>
                    <asp:RadioButton ID="rdoA" runat="server" GroupName="1" Text="DOM-讀取table" />
                </td>
                <td>
                   <asp:DropDownList ID="dpDom" runat="server"></asp:DropDownList>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:RadioButton ID="rdoB" runat="server" GroupName="1" Text="DOM-讀取節點" />
                </td>
                <td>
                    <asp:TextBox ID="txtDom" runat="server" ReadOnly="true" ></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:RadioButton ID="rdoC" runat="server" GroupName="1" Text="HTTP-返回字串" />
                </td>
                <td>
                <asp:DropDownList ID="dpHttp" runat="server"></asp:DropDownList>
                </td>
            </tr>
        </table>
    </form>
</body>
</html>


三.后台文件(.cs)

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
    #region 公用函数
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Ajax() == true)
        {
            return;
        }
        //注册JS
        this.AddJS();
    }

    /// <summary>
/// 注册JS
/// </summary>
    private void AddJS()
    {
        this.rdoA.Attributes.Add("onclick", "javascript:GetType();");
        this.rdoB.Attributes.Add("onclick", "javascript:GetType();");
        this.rdoC.Attributes.Add("onclick", "javascript:GetType();");
    }


    /// <summary>
    /// 处理AJAX事件
    /// </summary>
    /// <returns></returns>
    private bool Ajax()
    {
        bool Return = false;
        string senderCtl = "";
        if (Request["senderCtl"] != null)
        {
            senderCtl = Request["senderCtl"].ToString().Trim();
            switch (senderCtl)
            {
                case "DOM_dt": //使用DOM返回DT的XML
                    Response.Write(this.GetDom_Dt());
                    break;
                case "DOM_Node"://使用DOM返回XML文件
                    Response.Write(this.GetXmlDoc());
                    break;
                case "Http_string"://使用HTTP返回字串
                    Response.Write(this.GetHttp_string());
                    break;
                default: break;
            }
            Response.Flush();
            Response.Close();
            Return = true;
        }
        else
        {
            Return = false;
        }

        return Return;
    }

    /// <summary>
    /// 创建一个DataTable
    /// </summary>
    /// <returns></returns>
    private DataTable Setdt()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add(new DataColumn("ID"));
        dt.Columns.Add(new DataColumn("VALUE"));
        for (int i = 0; i < 3; i++)
        {
            DataRow dr = dt.NewRow();
            dr["ID"] = i.ToString();
            dr["VALUE"] = "test_" + i.ToString();
            dt.Rows.Add(dr);
        }
        return dt;
    }
    #endregion

    #region 使用DOM返回DT的XML
    private string GetDom_Dt()
    {
        string strXML = "<?xml version=" + Convert.ToChar(34) + "1.0" + Convert.ToChar(34) + " ?>";
        DataTable Dom_dt = this.Setdt();
        DataSet ds = new DataSet("AJAX");
        ds.Tables.Add(Dom_dt);
        ds.Tables[0].TableName = "Dom_Dt";
        strXML += ds.GetXml();
        return strXML;
    }
    #endregion

    #region 使用DOM返回XML文件
    private string GetXmlDoc()
    {
        string strValue = "<?xml version=" + Convert.ToChar(34) + "1.0" + Convert.ToChar(34) + " ?>";
        strValue += "<bookstore>";
        strValue += " <book>";
        strValue += "<title>Harry Potter</title> ";
        strValue += "<author>J K. Rowling</author> ";
        strValue += " </book>";
        strValue += "</bookstore>";
        return strValue;
    }
    #endregion

    #region 使用HTTP返回字串
    private string GetHttp_string()
    {
        string strValue = "<ID>";
        string strLink = "";
        DataTable Http_dt = this.Setdt();

        for(int i=0;i<Http_dt.Rows.Count;i++)
        {
            strValue += strLink;
            strValue += Http_dt.Rows[i]["ID"] .ToString()+ "##";
            strValue+= Http_dt.Rows[i]["VALUE"].ToString();
            strLink = "**";
        }

        strValue += "</ID>";
        return strValue;

    }
    #endregion
}