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>
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>
不行的. 在ashx文件中我是用 context.Response.Write(doc.OuterXml);
所以在aspx页面的JavaScript中:
xmlHttp.responseXML 没有返回数据.
只有xmlHttp.responseText中才有数据.
context.Response.ContentType = "text/plain";
改成:
context.Response.ContentType = "text/xml";
也就是一楼代码中的 function showXML()方法该怎么写[/b]