溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

使用Ajax怎么實現(xiàn)一個動態(tài)加載組合框

發(fā)布時間:2021-04-20 15:55:17 來源:億速云 閱讀:137 作者:Leah 欄目:web開發(fā)

這篇文章將為大家詳細講解有關(guān)使用Ajax怎么實現(xiàn)一個動態(tài)加載組合框,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

一  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時,創(chuàng)建XMLHttpRequest對象的方法
      try {
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
     } catch(e) {
      try {       xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
       //舊版本的Internet Explorer,創(chuàng)建XMLHttpRequest對象
      } catch(e) {
       window.alert("創(chuàng)建XMLHttpRequest對象錯誤"+e);
      } 
     }
    } else if(window.XMLHttpRequest) { //mozilla時,創(chuàng)建XMLHttpRequest對象的方法
      xmlHttp = new XMLHttpRequest();
     } 
    if(!(xmlHttp)) { //未成功創(chuàng)建XMLHttpRequest對象
      window.alert("創(chuàng)建XMLHttpRequest對象異常!");
    } 
    }
   //下拉列表項改變時的操作
   function proChange(objVal) {
     createXMLHttpRequest(); //創(chuàng)建XMLHttpRequest對象
     document.getElementById("city").length = 1;   //根據(jù)ID獲取指定元素,并賦值
     xmlHttp.onreadystatechange = cityList; //指定onreadystatechange處理函數(shù)
     var url="CityByXMLServlet?province="+objVal; //請求的URL地址
     xmlHttp.open("POST",url,true);
     xmlHttp.send(null);
    }
    function cityList() { //onreadystatechange的處理函數(shù)
    if(xmlHttp.readyState==4) {
      if(xmlHttp.status==200) {
       parseXML(xmlHttp.responseXML);   //解析服務(wù)器返回的XML數(shù)據(jù)
     }
     }
   }
    //解析xml信息,以添加地市
    function parseXML(xmlDoc) {
    var len = xmlDoc.getElementsByTagName("city");
    //獲取XML數(shù)據(jù)中所有的“city”元素對象集合
     var _citySel = document.getElementById("city");   //根據(jù)ID獲取頁面中的select元素
     for(var i=0;i<len.length;i++) { //遍歷XML數(shù)據(jù)并給select元素添加選項
     var opt = document.createElement("OPTION");   //創(chuàng)建option對象
     opt.text = xmlDoc.getElementsByTagName("city")[i].firstChild.data;
     //指定新創(chuàng)建元素的text屬性值
     opt.value = xmlDoc.getElementsByTagName("city")[i].firstChild.data;
    //指定新創(chuàng)建元素的value屬性值
     _citySel.add(opt); //為select元素添加option
    }
    }
   </script>
   <title>動態(tài)加載組合框</title>
  </head>
  <body>
   <table align="center" border=1 width="320">
    <tr>
     <td>省份:</td>
    <td>
     <select id="province" onChange="proChange(this.value);" >
      <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" >
       <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); //設(shè)置服務(wù)器響應(yīng)類型
       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(); //關(guān)閉輸出流
     }
     /*
     * 初始化城市
     */
  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發(fā)生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><!--你創(chuàng)建的類名 -->
  <url-pattern>/CityByXMLServlet</url-pattern>
</servlet-mapping>

關(guān)于使用Ajax怎么實現(xiàn)一個動態(tài)加載組合框就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI