无刷新三级联动(ajax)(转)

要求使用ajax实现无刷新的三级联动

<head>
    <title></title>
    <script src="Jquery1.7.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {

、、、、、、、、、、、省份、、、、、、、、、、、、、、、、、、
            $.ajax({
                type: "post",
                contentType: "application/json",
                url: "WebService1.asmx/GetProvince",
                data: "{}",
                success: function (result) {
                    var op = "";
                    for (var i = 0; i < result.d.length; i++) {
                        op += '<option value=' + result.d[i].provinceID + '>';
                        op += result.d[i].provincename;
                        op += '</option>';
                    }
                    $("#seprovince").append(op);
                }
            })

、、、、、、、、、、、当省份发生改变时,城市改变、、、、、、、、、、、、、、、、、
            $('#seprovince').change(function () {

                $('#secity option:gt(0)').remove();
                $('#searea option:gt(0)').remove();
                $.ajax({
                    type: "post",
                    contentType: "application/json",
                    url: "WebService1.asmx/GetCity",
                    data: "{proid:'" + $(this).val() + "'}",
                    success: function (result) {
                        var strocity = '';
                        for (var i = 0; i < result.d.length; i++) {
                            strocity += '<option value=' + result.d[i].cityID + '>';
                            strocity += result.d[i].cityname;
                            strocity += '</option>';
                        }
                        $('#secity').append(strocity);
                    }
                })
            })

、、、、、、、、、、当城市改变时,县改变、、、、、、、、、、、、、
            $('#secity').change(function () {
             $.ajax({
                    type: "post",
                    contentType: "application/json",
                    url: "WebService1.asmx/GetAreaByCity",
                    data: "{cityid:'" + $(this).val() + "'}",
                    success: function (result) {
                        var stroarea = '';
                        for (var i = 0; i < result.d.length; i++) {
                            stroarea += '<option value=' + result.d[i].areaID + '>';
                            stroarea += result.d[i].areaname;
                            stroarea += '</option>';
                        }
                        $('#searea').append(stroarea);
                    }
                  })
             })
        })
    </script>
</head>
<body>

    :<select id="seprovince">
        <option>--请选择--</option></select>
        市:<select  id="secity">
        <option>--请选择--</option></select>
    县:<select id="searea">
        <option>--请选择--</option>
    </select>
</body>
</html>

前台的界面(我只是简单的搭了一下)

///////////////////////////////////WebService1页面代码///////////////////////////////////////

namespace 省市县三级联动
{
    /// <summary>
    /// WebService1 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
     [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
        [WebMethod]
        public List<Model.province> GetProvince() 
        {
            BLL.province bpro = new BLL.province();
            List<Model.province> list = bpro.GetListModel();
            return list;
        }
        [WebMethod]
        public List<Model.city> GetCity(string proid)
        {
            BLL.city bctiy = new BLL.city();
            List<Model.city> list = bctiy.GetListModel("father='"+proid+"'");
            return list;
        }
        [WebMethod]
        public List<Model.area> GetAreaByCity(string cityid)
        {
            BLL.area barea = new BLL.area();
            List<Model.area> list = barea.GetListModel("father='" + cityid + "'");
            return list;
        }
    }
}

//////////////省份对应的BLL层代码

 public List<Model.province> GetListModel()
        {
            return dal.GetListModel();
        }

//////////城市对应的BLL层代码

 public List<Model.city> GetListModel(string pcity)
        {
            return dal.GetListModel(pcity);
        }

////////////////县对应的BLL层代码

 public List<Model.area> GetListModel(string strsql)
        {
            return dal.GetListModel(strsql);
        }

////////////////////省份对应的DAL层代码

 public System.Collections.Generic.List<Model.province> GetListModel()
        {
            System.Collections.Generic.List<Model.province> list = new System.Collections.Generic.List<Model.province>();
            DataTable dt = GetList("").Tables[0];
            foreach (DataRow row in dt.Rows)
            {
                Model.province mpro = new Model.province();
                mpro.id = Convert.ToInt32(row["id"]);
                mpro.provinceID = row["provinceID"].ToString();
                mpro.provincename = row["provincename"].ToString();
                list.Add(mpro);
            }
            return list;
        }

/////////////////////城市对应的DAL层代码

  public System.Collections.Generic.List<Model.city> GetListModel(string pcity)
        {
            System.Collections.Generic.List<Model.city> list = new System.Collections.Generic.List<Model.city>();
            DataTable dt = GetList(pcity).Tables[0];            
            foreach (DataRow row in dt.Rows)
            {
                Model.city mcity = new Model.city();
                mcity.id = Convert.ToInt32(row["id"]);
                mcity.cityID = row["cityID"].ToString();
                mcity.cityname = row["cityname"].ToString();
                list.Add(mcity);
            }
            return list;
        }

//////////////////县对应的DAL层代码

  public System.Collections.Generic.List<Model.area> GetListModel(string strsql)
        {
            DataTable dt = GetList(strsql).Tables[0];
            System.Collections.Generic.List<Model.area> list = new System.Collections.Generic.List<Model.area>();
            foreach (DataRow row in dt.Rows)
            {
                Model.area marea = new Model.area()
                {
                    id = Convert.ToInt32(row["id"]),
                    areaID = row["areaID"].ToString(),
                    areaname = row["areaname"].ToString()
                };
                list.Add(marea);
            }
            return list;
        }

这里是最后的效果图:

 
 
原文地址:https://www.cnblogs.com/zxw0004/p/5059856.html