AJAX实现两个下拉框之间内容的联动

1.效果

第一个下拉框选择蔬菜时,第二个联动显示黄瓜,番茄
第一个下拉框选择水果时,第二个联动显示苹果,菠萝

2.实现

JSP页面,connect.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'connect.jsp' starting page</title>
   
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->
 
 <script type="text/javascript">
  function change(){
   var sortName = document.getElementById("sort").value;
   
   //1.获得ajax对象
   var xhr = new XMLHttpRequest();
   //2.新建请求
   xhr.open("post","ConnectServlet.do",true);
   //3.请求头
   xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
   //4.请求体
   xhr.send("method=connect&sortName="+sortName);
   
   //5.前后台交互
   xhr.onreadystatechange = function(){
    //正常交互
    if(xhr.status==200 && xhr.readyState==4){
     //6.得到返回结果
     var result = xhr.responseText;
     //拆分json里的所有数据为单个数据
     var obj = eval("("+result+")");
     var arr = obj.list;
     //7.根据结果处理同步,种类下拉框联动内容下拉框
     //先清空内容下拉框
     document.getElementById("content").options.length=0;
     //将要显示的内容展现
     for(var i = 0;i<arr.length;i++){
      var option = new Option(arr[i],arr[i]);
      document.getElementById("content").options.add(option);
     }
    }
   };
  }
 </script>
  </head>
 
  <body>
  <select id="sort" οnchange="change()">
     <option vlaue="firut">水果</option>
     <option value="vagetable">蔬菜</option>
    </select><br>
    <br>
    <select id="content">
     <option></option>
    </select>

</body>
</html>

Servlet,ConnectServlet

public class ConnectServlet extends HttpServlet {
 
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  doPost(request,response);
 }
 
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
   //要调用的方法
  String method = request.getParameter("method");
  
  if("connect".equals(method))
   connect(request,response);

 }
 //联动方法
 private void connect(HttpServletRequest request,
   HttpServletResponse response) {
  //解决乱码
  response.setCharacterEncoding("utf-8");
  //看是蔬菜还是水果
  String sortName = request.getParameter("sortName");
  //根据sortName对数据库进行查询,返回不同数据,这里就不操作数据库了
  List list = new ArrayList();
  if("vagetable".equals(sortName)){
   list.add("黄瓜");
   list.add("番茄");
  }else{
   list.add("苹果");
   list.add("菠萝");
  }
  
  try {
   //向后台传数据的对象
   PrintWriter out = response.getWriter();
   //用json来存集合,需要导相关的jar包
   JSONObject json = new JSONObject();
   json.put("list", JSONArray.fromObject(list));
   System.out.println(json.toString());
   out.print(json.toString());
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }
}
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值