Ajax+XML二级联动下拉框(省份、城市选择框)

JSP代码如下:

<html>
 <head>
  <base href="<%=basePath%>">
  <title>Ajax二级下拉菜单示例</title>
  <script type="text/javascript">
 
   /* Create a new XMLHttpRequest object to talk to the Web server */
   var xmlHttp = false;
   /*@cc_on @*/
   /*@if (@_jscript_version >= 5)
   try {
     xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
   } catch (e) {
     try {
       xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
     } catch (e2) {
       xmlHttp = false;
     }
   }
   @end @*/
   
   if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
      xmlHttp = new XMLHttpRequest();
   } 
  
   function selectPro() { 
    var selPro=document.getElementById("pro");
    var url = "CityServlet?pro="+selPro.value; 
    xmlHttp.open("GET", url, true);
    xmlHttp.onreadystatechange = updateCity;
    xmlHttp.send(null);
   }
   
   function updateCity() {
      if (xmlHttp.readyState == 4 ) {
       if(xmlHttp.status ==200){   
        var xml;   
        
     /** 方法一 */
   /*     xml = xmlHttp.responseXml;  */    
   
     /** 方法二 */       
       xml= new ActiveXObject("Microsoft.XMLDOM"); 
     xml.load(xmlHttp.responseXml);

      
      var citys=xml.getElementsByTagName("citys/city"); 
      removeOption();
      addOption(citys);        
        }else{
         alert("status:"+xmlHttp.status);
        }
    }
   }
   
   /** 移除城市 */
   function removeOption(){    
    var opts=document.getElementById("city").options; 
    for(var i=opts.length-1;i>0;i--){
     opts[i]=null;
    }
   } 
   
   /** 添加城市 */
   function addOption(addOpts){    
    for(var i=0;i<addOpts.length;i++){
     var cityOpts=document.getElementById("city").options;
     var opt = document.createElement("option");
     opt.value=addOpts[i].text;
     opt.text=addOpts[i].text;
     cityOpts.add(opt);       
    }  
   }
   
  </script>  
  
 </head>

 <body>
  <form>
   <select id="pro" οnchange="selectPro();">
    <option>--请选择省份--</option>
    <option value="JiangXi">江西省</option>
    <option value="JiangSu">江苏省</option>
    <option value="ZheJiang">浙江省</option>  
   </select>
   <select id="city">
    <option>--请选择城市--</option>
   </select>
  </form>
 </body>
</html>

 

Servlet代码如下:

public class CityServlet extends HttpServlet {
 
 Map cityMap;

 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  response.setContentType("text/xml"); 
  response.setCharacterEncoding("UTF-8");
  PrintWriter out = response.getWriter();
  String pro = request.getParameter("pro");
  List<String> citys=(List<String>)cityMap.get(pro);
  StringBuffer sb=new StringBuffer("<?xml version=/"1.0/" encoding=/"UTF-8/"?>");
  sb.append("<citys>");
  for (String city : citys) {
   sb.append("<city>");
   sb.append(city);
   sb.append("</city>");   
  }
  sb.append("</citys>");
  out.write(sb.toString());
  out.flush();
  out.close();
 }


 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  doGet(request,response);
 }


 public void init() throws ServletException {
  cityMap = new HashMap();
  List<String> city=new ArrayList<String>();
  city.add("南昌");
  city.add("九江");
  city.add("吉安");
  cityMap.put("JiangXi", city);
  city=new ArrayList<String>();
  city.add("南京");
  city.add("苏州");
  city.add("镇江");
  cityMap.put("JiangSu", city);  
  city=new ArrayList<String>();
  city.add("杭州");
  city.add("温州");
  cityMap.put("ZheJiang", city);    
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值