Ajax实现联动效果

用到了地区的数据库

html代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script src="script/jquery-1.7.1.js"></script>
    <script language="javascript">
        $(document).ready(function () {
            fillProv();//加载省份,加载省份的函数中调用了加载城市的函数,记载城市的函数调用了加载县市区的函数(为了防止异步传输页面加载不出东西)
            //添加事件
            //给省份添加事件
            $("#ddlProv").change(function () {
                fillCity();
            });//change
            $("#ddlCity").change(function () {
                fillCountry();
            });//change
        });//ready

        function fillProv() {
            $.ajax({
                url: "LianDong.ashx",
                data: { parent: "0001" },
                type: "POST",
                dataType: "XML",
                success: function (data) {
                    //解析XML
                    $("#ddlProv").empty();//加载之前清空下拉
                    var arr = $(data).find("item");
                    for (var i = 0; i < arr.length; i++) {
                        var code = arr.eq(i).attr("code");
                        var name = arr.eq(i).attr("name");
                        //显示HTML
                        //var op = "<option value='" + code + "'>" + name + "</option>";
                        $("#ddlProv").append("<option value='" + code + "'>" + name + "</option>");
                    };//for
                    fillCity();
                }//success
            });//ajax
        }
            function fillCity()
            {
                var parent=$("#ddlProv").val();
                $.ajax({
                    url: "LianDong.ashx",
                    data: { parent: parent },
                    type: "POST",
                    dataType: "XML",
                    success: function (data)
                    {
                        $("#ddlCity").empty();//加载之前清空下拉
                        //解析
                        var arr = $(data).find("item");
                        for (var i = 0; i < arr.length; i++) {
                            var code = arr.eq(i).attr("code");
                            var name = arr.eq(i).attr("name");
                            //显示HTML
                            $("#ddlCity").append("<option value='" + code + "'>" + name + "</option>");
                        }//for
                        fillCountry();
                    }//success
                });//ajax
            }
            function fillCountry()
            {
                var parent = $("#ddlCity").val();
                $.ajax({
                    url: "LianDong.ashx",
                    data: { parent: parent },
                    type: "POST",
                    dataType: "XML",
                    success: function (data)
                    {
                        $("#ddlCountry").empty();//加载之前清空下拉
                        //解析
                        var arr = $(data).find("item");
                        for (var i = 0; i < arr.length; i++) {
                            var code = arr.eq(i).attr("code");
                            var name = arr.eq(i).attr("name");
                            //显示
                            $("#ddlCountry").append("<option value='" + code + "'>" + name + "</option>");
                        }
                    }//success
                });//ajax
            }
        
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:DropDownList ID="ddlProv" runat="server"></asp:DropDownList>
            <asp:DropDownList ID="ddlCity" runat="server"></asp:DropDownList>
            <asp:DropDownList ID="ddlCountry" runat="server"></asp:DropDownList>
        </div>
    </form>
</body>
</html>

服务端代码:

public class LianDong : IHttpHandler {
    private MyDBDataContext _Context = new MyDBDataContext();
    public void ProcessRequest (HttpContext context) {
        //获取请求过来的值
        var s = context.Request["parent"];
        StringBuilder sb = new StringBuilder();//命名空间using System.Text;
        string rel = null;
        //根据请求过来的值查询相应的数据
        var query = this._Context.ChinaStates.Where(r => r.ParentAreaCode == s);
        if (query.Count()>0)
        {
            foreach (ChinaStates data in query)
            {
                sb.Append("<item code='" + data.AreaCode + "' name='" + data.AreaName + "'/>");
            }
        }
        //回发xml
        rel = sb.ToString();
        context.Response.Write("<?xml version='1.0'?>");
        context.Response.Write("<root>");
        context.Response.Write(rel);
        context.Response.Write("</root>");
        context.Response.End();
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我可以为您提供相关的代码实现。 这是一个基于 jQuery 的三级联动下拉菜单的例子: HTML 代码: ``` <select id="province"> <option value="">请选择省份</option> </select> <select id="city"> <option value="">请选择城市</option> </select> <select id="area"> <option value="">请选择地区</option> </select> ``` jQuery 代码: ``` $(document).ready(function(){ // 加载省份数据 $.ajax({ type: "GET", url: "省份数据接口地址", dataType: "json", success: function(data){ $.each(data,function(i,item){ $("#province").append("<option value='"+item.code+"'>"+item.name+"</option>"); }); } }); // 当省份选择发生变化时,加载城市数据 $("#province").change(function(){ var provinceCode = $(this).val(); if(provinceCode != ""){ $.ajax({ type: "GET", url: "城市数据接口地址", data: {"provinceCode":provinceCode}, dataType: "json", success: function(data){ $("#city").empty(); $("#area").empty(); $("#city").append("<option value=''>请选择城市</option>"); $.each(data,function(i,item){ $("#city").append("<option value='"+item.code+"'>"+item.name+"</option>"); }); } }); }else{ $("#city").empty(); $("#area").empty(); $("#city").append("<option value=''>请选择城市</option>"); $("#area").append("<option value=''>请选择地区</option>"); } }); // 当城市选择发生变化时,加载地区数据 $("#city").change(function(){ var cityCode = $(this).val(); if(cityCode != ""){ $.ajax({ type: "GET", url: "地区数据接口地址", data: {"cityCode":cityCode}, dataType: "json", success: function(data){ $("#area").empty(); $("#area").append("<option value=''>请选择地区</option>"); $.each(data,function(i,item){ $("#area").append("<option value='"+item.code+"'>"+item.name+"</option>"); }); } }); }else{ $("#area").empty(); $("#area").append("<option value=''>请选择地区</option>"); } }); }); ``` 请注意,以上代码中的数据接口地址需要替换为实际的接口地址。此外,还需要根据实际情况调整代码中的数据格式和名称。 ### 回答2: Ajax多级联动效果是指利用Ajax技术实现多个下拉菜单之间的数据联动实现根据前一个下拉菜单的选项动态改变后续下拉菜单的选项内容。Ajax三级联动下拉菜单效果是指有三个相关联的下拉菜单,选择一个下拉菜单的选项后,另外两个下拉菜单的选项内容会相应改变。 实现这个效果的步骤如下: 1. 前端页面设置三个下拉菜单元素,并使用JavaScript监听第一个下拉菜单的选项改变事件,即当第一个下拉菜单的选项改变时触发事件。 2. 在JavaScript中定义一个Ajax请求函数,该函数通过发送一个Ajax请求到后端获取第二个下拉菜单的选项内容。 3. 后端接收到Ajax请求后,根据第一个下拉菜单选项的值进行相应的数据处理,并将处理结果返回给前端。 4. 前端通过Ajax请求的回调函数获取到后端返回的数据,然后将数据设置为第二个下拉菜单的选项内容。 5. 同样地,对第二个下拉菜单也需要设置一个监听选项改变事件的函数,并在该函数中通过发送Ajax请求获取第三个下拉菜单的选项内容。 6. 后端根据第二个下拉菜单选项的值进行数据处理,并返回给前端。 7. 前端通过回调函数获取到后端返回的数据,并将数据设置为第三个下拉菜单的选项内容。 通过以上步骤,就可以实现Ajax三级联动下拉菜单效果。在这个过程中,通过Ajax技术实现了前后端的数据交互,从而实现了多级联动效果。 ### 回答3: Ajax多级联动效果指的是在网页中使用Ajax技术实现多个下拉菜单之间的联动效果。常见的应用场景是省市区三级联动选择。 具体操作如下: 1. 在HTML中,定义一个最外层的下拉菜单,用来选择省份。 2. 使用Ajax发送请求,获取省份列表数据,并将数据填充到省份的下拉菜单中。 3. 给省份下拉菜单添加change事件监听器,当省份变化时,触发事件回调函数。 4. 在事件回调函数中,获取选中的省份值,并发送Ajax请求获取对应的城市列表数据。 5. 将获取到的城市列表数据填充到城市的下拉菜单中。 6. 给城市下拉菜单添加change事件监听器,当城市变化时,触发事件回调函数。 7. 在事件回调函数中,获取选中的城市值,并发送Ajax请求获取对应的区县列表数据。 8. 将获取到的区县列表数据填充到区县的下拉菜单中。 9. 完成三级联动菜单的效果。 通过以上步骤,实现Ajax三级联动下拉菜单效果,用户可以根据选择的省市区,动态获取到对应的下级菜单数据,从而实现多级联动效果。此种效果在选择地址、商品分类等场景中应用广泛。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值