[Ajax] jQuery中的Ajax -- 02-jQuery中的三级联动

案例 jQuery的三级联动

server2.json代码展示

[
  {
    "province": "吉林省",
    "cities": [
      {
        "city": "长春市",
        "counties": ["朝阳区", "经济开发区", "高新区"]
      },
      {
        "city": "吉林市",
        "counties": ["东城区", "经济开发区", "老城区"]
      },

      {
        "city": "白山市",
        "counties": ["二道区", "河东区", "高新区"]
      }
    ]
  },
  {
    "province": "辽宁省",
    "cities": [
      {
        "city": "沈阳市",
        "counties": ["朝阳区", "经济开发区", "高新区"]
      },
      {
        "city": "大连市",
        "counties": ["东城区", "经济开发区", "老城区"]
      },
      {
        "city": "铁岭市",
        "counties": ["二道区", "河东区", "高新区"]
      }
    ]
  },
  {
    "province": "山东省",
    "cities": [
      {
        "city": "青岛市",
        "counties": ["朝阳区", "经济开发区", "高新区"]
      },
      {
        "city": "济南市",
        "counties": ["东城区", "经济开发区", "老城区"]
      },
      {
        "city": "威海市",
        "counties": ["二道区", "河东区", "高新区"]
      }
    ]
  }
]

HTML代码展示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>三级联动</title>
</head>
<body>
<!-- 三级联动 - 两个二级联动 -->
<select id="province">
    <option value="">---</option>
</select>
<select id="city">
    <option value="">---</option>
</select>
<select id="county">
    <option value="">---</option>
</select>

<script src="../js/js/jquery-1.12.4.js"></script>
<script src="../js/createXMLHttpRequest.js"></script>
<script>
    var $province = $("#province");
    var $city = $("#city");
    var $county = $("#county");
    var json;
    $.getJSON("data/server2.json", function (data) {
        // 把data保存到json全局变量中
        json = data;
        // 遍历data数据
        $.each(data, function (index, obj) {
            // 获取所有的省份信息
            var provinceName = obj.province;
            // 将省份信息添加到对应的select元素中
            $province.append(
                `<option value="${provinceName}">${provinceName}</option>`
            );
        });

        $province.change(function () {
            // 将城市下拉列表的选项清空
            $city.empty();
            $city.append(`<option value="">---</option>`);

            // 获取到所选择的城市的文本信息
            var provinceElementName = $(this).children("option:selected").text();
            $.each(json, function (index, obj) {
                var provinceName = obj.province;
                if (provinceElementName === provinceName) {
                    // 获取到城市数组集合
                    var cities = obj.cities;
                    // 遍历城市数组集合
                    $.each(cities, function (index, obj) {
                        // 获取到城市名称
                        var cityName = obj.city;
                        // 将该省对应的城市名称添加到对应的select中
                        $city.append(
                            `<option value="${cityName}">${cityName}</option>`
                        );
                    });
                }
            });
        });

        $city.change(function () {
            // 将区级下拉列表的选项清空
            $county.empty();
            $county.append(`<option value="">---</option>`);

            // 获取到所选择的城市的文本信息
            var cityElementName = $(this).children("option:selected").text();
            $.each(json, function (index, obj) {
                // 获取该省对应的所有的城市信息
                var cities = obj.cities;
                $.each(cities, function (index, cityObj) {
                    var cityName = cityObj.city;
                    if (cityElementName === cityName) {
                        // 获取到区级数组集合
                        var counties = cityObj.counties;
                        // 遍历区级数组集合
                        $.each(counties, function (index, value) {
                            // 获取到区级名称
                            // 将该城市对应的区级名称添加到对应的select元素中
                            $county.append(`<option value="${value}">${value}</option>`);
                        });
                    }
                });
            });
        });
    });
</script>
</body>
</html>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现select下拉框的三级联动,可以通过AjaxJQuery来实现。具体步骤如下: 1.在页面定义三个select下拉框,并且为它们分别定义id。 ``` <select id="province"></select> <select id="city"></select> <select id="district"></select> ``` 2.编写ajax请求,获取省份数据,填充省份下拉框。 ``` $.ajax({ url: "getProvinceList", type: "GET", dataType: "json", success: function(data){ var options = "<option value=''>--请选择--</option>"; for(var i=0; i<data.length; i++){ options += "<option value='" + data[i].id + "'>" + data[i].name + "</option>"; } $("#province").html(options); } }); ``` 3.为省份下拉框绑定change事件,当选择省份时,发送ajax请求获取该省份的城市数据,填充城市下拉框。 ``` $("#province").change(function(){ var provinceId = $(this).val(); $.ajax({ url: "getCityList", type: "GET", dataType: "json", data: {"provinceId":provinceId}, success: function(data){ var options = "<option value=''>--请选择--</option>"; for(var i=0; i<data.length; i++){ options += "<option value='" + data[i].id + "'>" + data[i].name + "</option>"; } $("#city").html(options); } }); }); ``` 4.为城市下拉框绑定change事件,当选择城市时,发送ajax请求获取该城市的区/县数据,填充区/县下拉框。 ``` $("#city").change(function(){ var cityId = $(this).val(); $.ajax({ url: "getDistrictList", type: "GET", dataType: "json", data: {"cityId":cityId}, success: function(data){ var options = "<option value=''>--请选择--</option>"; for(var i=0; i<data.length; i++){ options += "<option value='" + data[i].id + "'>" + data[i].name + "</option>"; } $("#district").html(options); } }); }); ``` 以上就是基于AjaxJQuery实现select下拉框三级联动的步骤。需要注意的是,需要编写后台代码来获取省份、城市、区/县的数据,并返回给前台。另外,需要在页面引入JQuery库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值