ashx文件代码如下:<%@ WebHandler Language="C#" Class="Handler" %>using System;
using System.Web;
using System.Xml;
using System.Data;
using System.Data.SqlClient;public class Handler : IHttpHandler {
    
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        string connectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        if (context.Request["XML"] == null)
        {
            int result = Convert.ToInt32(context.Request.QueryString["oper1"]) + Convert.ToInt32(context.Request.QueryString["oper2"]);
            context.Response.Write(result);
        }
        else
        {
            SqlDataAdapter sda = new SqlDataAdapter("SELECT TOP 100 Card_Number, Emp_Number, Emp_Name, Department, Position FROM Employee", connectionString);
            DataTable dt = new DataTable();
            sda.Fill(dt);
           
            XmlDocument doc = new XmlDocument();
            XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
            doc.AppendChild(dec);
            XmlElement root = doc.CreateElement("Employees");
            doc.AppendChild(root);
            foreach (DataRow dr in dt.Rows)
            {
                XmlNode node = doc.CreateElement("Employee");                XmlElement ele_Card_Number = doc.CreateElement("Card_Number");
                ele_Card_Number.InnerText = dr["Card_Number"].ToString();
                node.AppendChild(ele_Card_Number);                XmlElement ele_Emp_Number = doc.CreateElement("Emp_Number");
                ele_Emp_Number.InnerText = dr["Emp_Number"].ToString();
                node.AppendChild(ele_Emp_Number);                XmlElement ele_Emp_Name = doc.CreateElement("Emp_Name");
                ele_Emp_Name.InnerText = dr["Emp_Name"].ToString();
                node.AppendChild(ele_Emp_Name);                XmlElement ele_Department = doc.CreateElement("Department");
                ele_Department.InnerText = dr["Department"].ToString();
                node.AppendChild(ele_Department);                XmlElement ele_Position = doc.CreateElement("Position");
                ele_Position.InnerText = dr["Position"].ToString();
                node.AppendChild(ele_Position);
                
                root.AppendChild(node);
            }
            
            context.Response.Write(doc.OuterXml);
        }
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }}
aspx页面代码如下:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>
    <link type="text/css" rel="stylesheet" href="styleSheet.css" />    <script language="javascript" type="text/javascript">
    var xmlHttp;
    function createXMLHttpRequest()
    {
        if(window.activeXObject)
        {
            xmlHttp = new ActiveXOjbect("Microsoft.XMLHTTP");
        }
        else if (window.XMLHttpRequest)
        {
            xmlHttp = new XMLHttpRequest();
        }
    }
   
    function readData()
    {
        createXMLHttpRequest();
        var url = "Handler.ashx?XML=1";
        xmlHttp.open("GET",url,true);
        xmlHttp.onreadystatechange = showXML;
        xmlHttp.send(null);
    }
    
    function showXML()
    {
        if(xmlHttp.readyState == 4)
        {
            if(xmlHttp.status == 200)
            {
                var table = "<table border=\"1\">";
                var xmlDoc = xmlHttp.responseXML;
                alert(xmlHttp.responseText);
                alert(xmlDoc);
                var nodes = xmlDoc.childNodes;
                for( i = 0; i < nodes.length; i++)
                {
                    table += "<tr>";
                    childs = nodes[i].childNodes;
                    for(j = 0; childs.length; j++)
                    {
                        table += "<td>" + childs[j].firstChild.value + "</td>";                       
                    }
                    table += "</td>";
                }  
                alert(table);
                document.getElementById("div_Table").innerHTML = table;              
            }
        }
    }
    </script></head>
<body>
    <form id="form1" runat="server">
        <input id="read" type="button" value="读取数据" onclick="readData()" />
        <div id="div_Table">
        </div>
    </form>
</body>
</html>

解决方案 »

  1.   


    不行的. 在ashx文件中我是用  context.Response.Write(doc.OuterXml);
    所以在aspx页面的JavaScript中:
    xmlHttp.responseXML 没有返回数据.
    只有xmlHttp.responseText中才有数据.
      

  2.   

    找到方法了, 将ashx文件中的
    context.Response.ContentType = "text/plain";
    改成:
    context.Response.ContentType = "text/xml";
      

  3.   

    [b]现在新问题是如生根据这个xml生成一个HTML中的table.
    也就是一楼代码中的 function showXML()方法该怎么写[/b]