[黑马程序员]ajax 城市三级联动

来源:互联网 发布:调查问卷挣钱知乎 编辑:程序博客网 时间:2024/06/05 12:01

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------


客户端代码

<html><head>    <title></title>    <script src="js/jquery-1.7.2.js" type="text/javascript"></script>    <script language="javascript" type="text/javascript">        $(function () {            //初始化省份列表            //参数id为向服务器所要请求级别            //1:为省份            //2:为城市            //3:为区县            //value:0为省份的加载,其他的选中项的值            $.post("ashx/Address.ashx", { id: 1, value: 0 }, function (data, status) {                //将data装换成object                var json = eval("(" + data + ")");                //移除省份中的所有项                $("#sltProvince option").remove();                //添加省份中的默认选项                $("#sltProvince").append("<option value='0'>-请选择省份-</option>");                //遍历json对象的项,并装换成控件添加到省份下拉菜单中                $.each(json.p, function (index, item) {                    $("#sltProvince").append("<option value='" + item.id + "'>" + item.value + "</option>");                });            });            //省份下拉菜单的更改选项事件            $("#sltProvince").change(function () {                //获取省份的id值                var val = $(this).val();                $("#sltCity option").remove();                $("#sltCity").append("<option value='0'>-请选择城市-</option>");                $("#sltDistrict option").remove();                $("#sltDistrict").append("<option value='0'>-请选择县区-</option>");                //如果val为0,说明没有选择省份                //所以将城市和县区的选项都更改成默认的状态                if (val == "0") {                    return;                }                else {                    //通过ajax与服务器交互,获取选中省份对应的所有城市,添加到城市下来菜单中                    $.post("ashx/Address.ashx", { id: 2, value: val }, function (data, status) {                        var json = eval("(" + data + ")");                        $.each(json.c, function (index, item) {                            $("#sltCity").append("<option value='" + item.id + "'>" + item.value + "</option>");                        });                    });                }            });            //城市下来菜单的更改事件            $("#sltCity").change(function () {                //选中的城市的值                var val = $(this).val();                $("#sltDistrict option").remove();                $("#sltDistrict").append("<option value='0'>-请选择县区-</option>");                //如果val为0,说明没有选择城市                //所以将县区的选项都更改成默认的状态                if (val == "0") {                    return;                }                else {                    //通过ajax与服务器交互,获取选中省份对应的所有城市,添加到城市下来菜单中                    $.post("ashx/Address.ashx", { id: 3, value: val }, function (data, status) {                        var json = eval("(" + data + ")");                        $.each(json.d, function (index, item) {                            $("#sltDistrict").append("<option value='" + item.id + "'>" + item.value + "</option>");                        });                    });                }            });        });    </script></head><body  style="background-color:#d3eaaf">        <select id="sltProvince" style=" width:120px;">            <option value="0">-请选择省份-</option>        </select>        <select id="sltCity" style=" width:120px;">            <option value="0" >-请选择城市-</option>        </select>        <select id="sltDistrict" style=" width:120px;">            <option value="0">-请选择县区-</option>        </select>   </body></html>

服务器端代码(ashx)

<%@ WebHandler Language="C#" Class="Address" %>using System;using System.Web;using System.Data;using System.Data.SqlClient;using System.Configuration;public class Address : IHttpHandler{    public void ProcessRequest(HttpContext context)    {        context.Response.ContentType = "text/plain";        //获取id属性        string id = context.Request["id"];        //获取value   这个value是查询的条件        string value = context.Request["value"];        string output = "";//最终要输出的信息        //请求省份信息        if (id == "1")        {            output = GetProvince();        }        //请求城市信息  这是value的选中的省份的id        else if (id == "2")        {            //如果value==0,说明没有选择省份            if (value == "0")            {                return;            }            else            {                //获取指定省份的城市的信息(json格式的字符串)                output = GetCity(value);            }        }        //请求的县区的信息,这里value的值为选中的城市的id        else if (id == "3")        {            //如果value==0,说明没有选择城市            if (value == "0")            {                return;            }            else            {                //获取指定城市的县区的信息(json格式的字符串)                output = GetDistrict(value);            }        }        context.Response.Write(output);    }    /// <summary>    /// 获取省份的信息    /// </summary>    /// <returns>返回获得省份信息(json格式)</returns>    private string GetProvince()    {        SqlDataReader dr=DBOperater.getDataReader("SELECT * FROM S_Province");               string ProvinceMsg = "";//存储省份信息的变量        while (dr.Read())        {            //将字符串拼接成json格式            ProvinceMsg += "{id:" + dr["ProvinceID"].ToString() + ",value:'" + dr["ProvinceName"].ToString() + "'},";        }        DBOperater.getConnection().Close();//关闭数据库连接        ProvinceMsg = ProvinceMsg.Substring(0, ProvinceMsg.Length - 1);        ProvinceMsg = "{p:[" + ProvinceMsg + "]}";//拼接后最终的格式信息        return ProvinceMsg;    }    /// <summary>    /// 根据省份信息获取城市信息    /// </summary>    /// <param name="value">省份id号</param>    /// <returns>城市的信息(json格式)</returns>    private string GetCity(string value)    {        SqlDataReader dr = DBOperater.getDataReader("SELECT * FROM S_City where ProvinceID='" + value + "'");                string CityMsg = "";//存储城市信息的变量        while (dr.Read())        {            CityMsg += "{id:" + dr["CityID"].ToString() + ",value:'" + dr["CityName"].ToString() + "'},";        }        DBOperater.getConnection().Close();//关闭数据库连接        CityMsg = CityMsg.Substring(0, CityMsg.Length - 1);        CityMsg = "{c:[" + CityMsg + "]}";        return CityMsg;    }    /// <summary>    /// 获取区县信息    /// </summary>    /// <param name="value">城市的id</param>    /// <returns>县区的信息(json格式)</returns>    private string GetDistrict(string value)    {        SqlDataReader dr=DBOperater.getDataReader("SELECT * FROM S_District where CityID='" + value + "'");        string DistrictMsg = "";//存储县区信息的变量        while (dr.Read())        {            DistrictMsg += "{id:" + dr["DistrictID"].ToString() + ",value:'" + dr["DistrictName"].ToString() + "'},";        }        DBOperater.getConnection().Close();//关闭数据库连接        DistrictMsg = DistrictMsg.Substring(0, DistrictMsg.Length - 1);        DistrictMsg = "{d:[" + DistrictMsg + "]}";        return DistrictMsg;    }    public bool IsReusable    {        get        {            return false;        }    }}

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

	
				
		
原创粉丝点击