Ajax实现二级联动

ajax02.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>二级联动</title>
    <base href="<%=request.getContextPath()+"/"%>">
    
    <script type="text/javascript">

          var  xhr;

          function   change(val) {

              //发送Ajax的请求

                //A、创建XHR对象
                 xhr =new  XMLHttpRequest();

                //B、和服务器建立连接
                 xhr.open("get","AjaxServlet2?val="+val,true);

                //C、执行回调函数
                 xhr.onreadystatechange=process;

                //D、发送数据
                xhr.send(null);

          }
          
          function   process() {

              if(xhr.readyState==4&&xhr.status==200){

                  //'[篮球, 足球, 乒乓球]'
                  var  text= xhr.responseText;
                  //'篮球, 足球, 乒乓球'
                 var  t2= text.substring(1,text.length-1);
                  //  ["抖音", " 快手", " YY直播"]
                 var  t3= t2.split(",");

                 var  s=document.getElementById("s");

                 //每次进入循环需要重置
                 s.innerHTML="<option>--请选择--</option>";

                 for(var  i in t3){

                     s.innerHTML+='<option>'+t3[i]+'</option>';
                 }
              }
          }
        
    </script>
    
</head>
<body>

  <select onchange="change(this.value)">
      <option>--请选择--</option>
      <option value="1">体育</option>
      <option value="2">直播</option>
      <option value="3">美食</option>
  </select>

  <select id="s">
      <option>--请选择--</option>

  </select>

</body>
</html>

AjaxServlet2.java

@WebServlet("/AjaxServlet2")
public class AjaxServlet2 extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		//解决响应中文乱码
        resp.setContentType("text/html;charset=utf-8");
		
		//接受数据
        String val = req.getParameter("val");

        List<String>   list1=new ArrayList<>();
        list1.add("篮球");
        list1.add("足球");
        list1.add("乒乓球");

        List<String>   list2=new ArrayList<>();
        list2.add("抖音");
        list2.add("快手");
        list2.add("YY直播");


        List<String>   list3=new ArrayList<>();
        list3.add("炒饼");
        list3.add("炒面");
        list3.add("抄刀削");


        Map<String,List<String>>  map =new HashMap<>();
        map.put("1",list1);
        map.put("2",list2);
        map.put("3",list3);

        //用户响应的集合
        List<String> list = map.get(val);

        resp.getWriter().print(list);


    }
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要使用 Ajax 实现二级联动,可以按照以下步骤进行操作: 1. 在前端页面中创建两个下拉框,一个用于显示一级数据,一个用于显示二级数据。 ```html <select id="province"> <option value="">请选择省份</option> <option value="江苏省">江苏省</option> <option value="安徽省">安徽省</option> </select> <select id="city"> <option value="">请选择城市</option> </select> ``` 2. 编写 JavaScript 代码,监听一级下拉框的变化事件,根据选中的一级数据发送 Ajax 请求获取对应的二级数据,并更新二级下拉框的选项。 ```javascript $(document).ready(function() { $('#province').change(function() { var province = $(this).val(); $.ajax({ url: '/getCities', // 后台接口地址,模拟返回数据 type: 'GET', data: { province: province }, success: function(data) { // 清空二级下拉框的选项 $('#city').empty(); // 添加二级数据选项 for (var i = 0; i < data.length; i++) { $('#city').append('<option value="' + data[i] + '">' + data[i] + '</option>'); } }, error: function() { console.log('Error occurred while fetching cities.'); } }); }); }); ``` 3. 在后台编写模拟的接口 `/getCities`,根据传入的一级数据返回对应的二级数据。 ```java @RestController public class CityController { @GetMapping("/getCities") public List<String> getCities(@RequestParam("province") String province) { List<String> cities = new ArrayList<>(); if (province.equals("江苏省")) { cities.add("南京市"); cities.add("苏州市"); cities.add("无锡市"); } else if (province.equals("安徽省")) { cities.add("合肥市"); cities.add("芜湖市"); cities.add("蚌埠市"); } return cities; } } ``` 这样,当用户在一级下拉框中选择省份时,会触发 Ajax 请求,后台会根据选中的省份返回对应的城市数据,并更新二级下拉框的选项。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AloneDrifters

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值