使用Jquery和Ajax请求对应省份的城市

1 篇文章 0 订阅
1 篇文章 0 订阅

初始下拉框:

<select id="province">
            <option value="">选择省份</option>
            <option value="jiangsu">江苏省</option>
            <option value="zhejiang">浙江省</option>
            <option value="guangdong">广东省</option>
        </select>
        <select id="city">
            <option>选择城市</option>
        </select>

给下拉框选项值改变后添加事件:

    //选项改变后执行getVal()方法获取城市列表
    $('#province').on('change', function() {
        getVal();
    });

 在getVal()方法中实现对城市列表的请求和添加

//获得城市列表
function getVal() {
    //获得省份的值
    let optical = $("#province option:checked").val();
    console.log(optical);
    $.ajax({
        type: "get",
        url: '../jsp/selCityDoArray.jsp', // selCityDoArray.jsp文件相对于当前页面的路径
        data: { // 提交到服务器的数据
            provinceVal: optical
        },
        dataType: 'json', // 服务器返回的数据类型为json格式
        success: function(response) { // 请求成功的回调函数
            // 将城市信息作为option选项增加到城市下拉列表
            let citySelect = $('#city');
            citySelect.empty(); // 清空原有选项
            // 遍历response数组中的每一个城市信息,并将其加入到选项中
            $.each(response, function(i, city) {
                //添加新选项
                citySelect.append(new Option(city.text,city.value));
            });
        },
        error: function(xhr, status, error) { // 请求失败的回调函数
            console.error('请求失败:', error);
        }
    });
}

在JSP文件中处理服务器端的逻辑功能:

    // 获取省份值
    String provinceVal = request.getParameter("provinceVal");

    // 模拟数据源,这里使用Map来存储省份和城市的对应关系
    Map<String, List<String>> data = new HashMap<String, List<String>>();
    List<String> citiesOfJiangSu = new ArrayList<String>(Arrays.asList("南京市","苏州市","宿迁市","无锡市","常州市"));
    List<String> citiesOfZheJiang = new ArrayList<String>(Arrays.asList("杭州市","绍兴市","嘉兴市"));
    List<String> citiesOfGuangdong = new ArrayList<String>(Arrays.asList("广州市", "深圳市", "珠海市"));
    data.put("jiangsu", citiesOfJiangSu);
    data.put("zhejiang", citiesOfZheJiang);
    data.put("guangdong", citiesOfGuangdong);

    // 构造JSONArray
    JSONArray jsonArray = new JSONArray();
    if (provinceVal != null) {
        // 根据省份值获取城市列表
        List<String> cities = data.get(provinceVal.toLowerCase());
        if (cities != null) {
            // 遍历城市列表,构造JSONObject
            for (String city : cities) {
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("text", city);
                jsonObject.put("value", city.toLowerCase());
                jsonArray.add(jsonObject);
            }
        }
    }

    // 将数据返回到客户端
    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write(jsonArray.toJSONString());
// 输出类似于:[{text:"南京市",value:"nanjing"}]

效果如下

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值