html代碼
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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">
<script src="AJAX.js" type="text/javascript"></script>
<title>無標題頁</title>
<script type="text/javascript">
var xmlHttp;
function createXMLHttpRequest()
{
if(window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
}
function changeprovince(J)
{
clearCity();
createXMLHttpRequest();
var url= "Handler.ashx?pid=" + J +"&flag=0";
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange=showResult;
xmlHttp.send(null);
}
function showResult()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
var content=xmlHttp.responseText;
content =content.substring(0,content.length-1);
var arrTmp = content.split(",");
var myEle;
if(arrTmp.length>0)
{
for(var i=0;i<arrTmp.length;i++)
{
myEle = document.createElement("option") ;
myEle.value = arrTmp[i].toString();
i+=1;
myEle.text = arrTmp[i].toString();
form1.city.add(myEle) ;
}
form1.Text1.value="載入完成";
}
}
else
{
alert(xmlHttp.status);
}
}
else
{
form1.Text1.value="正在載入...";
}
}
function clearCity()
{
var city=document.form1.city;
for(var i=city.options.length;i>=0;i--)
{
city.options[i]=null;
}
var area=document.form1.area;
for(var y=area.options.length;y>=0;y--)
{
area.options[y]=null;
}
}
function cleararea()
{
var area=document.form1.area;
for(var y=area.options.length;y>0;y--)
{
area.options[y]=null;
}
}
function citychange(a)
{
// alert(a.options[a.options.selectedIndex].value); //得到所選項的Index
// alert(a.options[a.options.selectedIndex].text); //得到所選項的文本值
cleararea();
createXMLHttpRequest();
var url= "Handler.ashx?pid=" + a +"&flag=1";
// alert(url);
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange=showarea;
xmlHttp.send(null);
}
function showarea()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
var content=xmlHttp.responseText;
content =content.substring(0,content.length-1);
//alert(content);
var arrTmp = content.split(",");
var myEle;
if(arrTmp.length>0)
{
for(var i=0;i<arrTmp.length;i++)
{
myEle = document.createElement("option") ;
myEle.value = arrTmp[i].toString();
i+=1;
myEle.text = arrTmp[i].toString();
form1.area.add(myEle) ;
}
form1.Text1.value="載入完成";
}
}
else
{
// alert('測試');
alert(xmlHttp.status);
}
}
else
{
form1.Text1.value="正在載入...";
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="省"></asp:Label>
<asp:DropDownList ID="province" runat="server" Width="123px">
</asp:DropDownList>
<asp:Label ID="Label2" runat="server" Text="市"></asp:Label>
<select id="city" style="width: 122px" onchange="citychange(this.options[this.options.selectedIndex].value)" >
</select>
<asp:Label ID="Label3" runat="server" Text="區"></asp:Label>
<select id="area" style=" width: 141px">
</select>
<input id="Text1" type="text" /></div>
</form>
</body>
</html>
Handler.ashx代碼
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
using System.Data.SqlClient;
using System.Data.Sql;
public class Handler : IHttpHandler {
public void ProcessRequest (HttpContext context)
{
context.Response.ContentType = "text/plain";
string c = System.Configuration.ConfigurationSettings.AppSettings["con"];
SqlConnection con = new SqlConnection(c);
con.Open();
if (context.Request.QueryString["flag"].ToString() == "0")
{
string pid = context.Request.QueryString["pid"];
string content = "";
string sql = "select * from city where father=" + pid;
SqlCommand com = new SqlCommand(sql, con);
SqlDataReader rs = com.ExecuteReader();
while (rs.Read())
{
content += rs["cityID"] + "," + rs["city"] + ",";
}
context.Response.Write(content);
}
if (context.Request.QueryString["flag"].ToString() == "1")
{
string pid = context.Request.QueryString["pid"];
string content = "";
string sql = "select * from area where father=" + pid;
SqlCommand com = new SqlCommand(sql, con);
SqlDataReader rs = com.ExecuteReader();
while (rs.Read())
{
content += rs["areaID"] + "," + rs["area"] + ",";
}
context.Response.Write(content);
}
con.Close();
}
public bool IsReusable {
get {
return false;
}
}
}