欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Ajax实现动态加载组合框的实例代码

程序员文章站 2022-03-21 11:05:43
一  province.jsp <%@ page language="java" import="java.util.*" pageencodin...

一  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>

总结

以上所述是小编给大家介绍的ajax实现动态加载组合框的实例代码,希望对大家有所帮助