ajax实现动态加载组合框

一  province.jsp

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  <html>
   <head>
     <script type="text/javascript" language="javaScript">
       var xmlHttp = false; //全局变量,用于记录XMLHttpRequest对象
       function createXMLHttpRequest() {
         if(window.ActiveXObject) { //Internet Explorer时,创建XMLHttpRequest对象的方法
           try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
          } catch(e) {
            try {              xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
              //旧版本的Internet Explorer,创建XMLHttpRequest对象
            } catch(e) {
              window.alert("创建XMLHttpRequest对象错误"+e);
            } 
          }
        } else if(window.XMLHttpRequest) { //mozilla时,创建XMLHttpRequest对象的方法
           xmlHttp = new XMLHttpRequest();
         } 
        if(!(xmlHttp)) { //未成功创建XMLHttpRequest对象
            window.alert("创建XMLHttpRequest对象异常!");
        }  
       }
 
      //下拉列表项改变时的操作
      function proChange(objVal) {
         createXMLHttpRequest(); //创建XMLHttpRequest对象
         document.getElementById("city").length = 1;     //根据ID获取指定元素,并赋值
         xmlHttp.onreadystatechange = cityList; //指定onreadystatechange处理函数
         var url="CityByXMLServlet?province="+objVal; //请求的URL地址
         xmlHttp.open("POST",url,true);
         xmlHttp.send(null);
       }
       
       function cityList() { //onreadystatechange的处理函数
        if(xmlHttp.readyState==4) {
           if(xmlHttp.status==200) {
             parseXML(xmlHttp.responseXML);     //解析服务器返回的XML数据
          }
         }
      }
       //解析xml信息,以添加地市
       function parseXML(xmlDoc) {
       var len = xmlDoc.getElementsByTagName("city");
       //获取XML数据中所有的“city”元素对象集合
         var _citySel = document.getElementById("city");     //根据ID获取页面中的select元素
         for(var i=0;i<len.length;i++) { //遍历XML数据并给select元素添加选项
          var opt = document.createElement("OPTION");     //创建option对象
          opt.text = xmlDoc.getElementsByTagName("city")[i].firstChild.data;
          //指定新创建元素的text属性值
          opt.value = xmlDoc.getElementsByTagName("city")[i].firstChild.data;
        //指定新创建元素的value属性值
          _citySel.add(opt); //为select元素添加option
        }
       }
     </script>
     <title>动态加载组合框</title>
   </head>
   <body>
     <table align="center" border=1 width="320">
       <tr>
         <td>省份:</td>
        <td>
          <select id="province" onChange="proChange(this.value);" style="width:85">
            <option value="gd">广东</option>
             <option value="gx">广西</option>
             <option value="hn">湖南</option>
            <option value="hb">湖北</option>
            <option value="ah">安徽</option>
          </select>
        </td>
       </tr>
     <tr>
        <td>城市:</td>
        <td>
          <select id="city" style="width:85">
             <option value="">--请选择--</option>
          </select>
        </td>
       </tr>
     </table>
 </body>
  </html>
  二、CityByXMLServlet.java

package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class CityByXMLServlet
 */
@WebServlet("/CityByXMLServlet")
public class CityByXMLServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
   private static final String CONTENT_TYPE = "text/xml; charset=UTF-8";
  
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CityByXMLServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
                 throws ServletException, IOException {
            response.setContentType(CONTENT_TYPE); //设置服务器响应类型
             String province =request.getParameter("province");
             StringBuffer city = new StringBuffer("<citys>"); //记录返回XML串的对象
           
             if("gx".equals(province)){
            	List list=cityInit(); //获取城市列表
                for(int i=0;i<list.size();i++){
                     city.append("<city>"+list.get(i)+"</city>");
                }            
              }else if("hn".equals(province)){
            	 List list = cityInit1(); //获取城市列表
            	 for(int j=0;j<list.size();j++){
                     city.append("<city>"+list.get(j)+"</city>");
            	 }
               }else if("hb".equals(province)){
            	   List list = cityInit2(); //获取城市列表
              	 for(int j=0;j<list.size();j++){
                     city.append("<city>"+list.get(j)+"</city>");
              	 } 
              }
            city.append("</citys>");
            PrintWriter out = response.getWriter();
            out.println(city.toString());
            out.flush(); //输出流刷新
            out.close(); //关闭输出流
         }
     
         /*
          * 初始化城市
          */
    public List<String> cityInit2() {
        List<String> cityList = new ArrayList<String>();
     //添加城市列表
        cityList.add("武汉");
        cityList.add("襄阳");
        cityList.add("黄冈");
        cityList.add("荆门");
        cityList.add("十堰");
        cityList.add("黄石");
       return cityList;
   }
         public List<String> cityInit(){
             List<String> cityList = new ArrayList<String>();
          //添加城市列表
             cityList.add("南宁");
             cityList.add("桂林");
             cityList.add("北海");
             cityList.add("河池");
             cityList.add("梧州");
             cityList.add("玉林");
        return cityList;
     }
       public List<String> cityInit1() {
        List<String> cityList = new ArrayList<String>();
     //添加城市列表
        cityList.add("长沙");
        cityList.add("湘潭");
        cityList.add("岳阳");
        cityList.add("常德");
        cityList.add("衡阳");
        cityList.add("邵阳");
       return cityList;
   }
        /**
          *当前Servelt的初始化方法. <br>
          *
          * @throws ServletException发生ServletExceptio时抛出
          */
        public void init() throws ServletException {
        }
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}
三 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.4">
<servlet>
    <servlet-name>CityByXMLServlet</servlet-name>
    <servlet-class>servlet.CityByXMLServlet</servlet-class><!--类的位置  -->
</servlet>
<servlet-mapping>
    <servlet-name>CityByXMLServlet</servlet-name><!--你创建的类名  -->
    <url-pattern>/CityByXMLServlet</url-pattern>
</servlet-mapping>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值