Ajax實(shí)現(xiàn)動(dòng)態(tài)加載組合框的實(shí)例代碼
一 province.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<script type="text/javascript" language="javaScript">
var xmlHttp = false; //全局變量,用于記錄XMLHttpRequest對(duì)象
function createXMLHttpRequest() {
if(window.ActiveXObject) { //Internet Explorer時(shí),創(chuàng)建XMLHttpRequest對(duì)象的方法
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
//舊版本的Internet Explorer,創(chuàng)建XMLHttpRequest對(duì)象
} catch(e) {
window.alert("創(chuàng)建XMLHttpRequest對(duì)象錯(cuò)誤"+e);
}
}
} else if(window.XMLHttpRequest) { //mozilla時(shí),創(chuàng)建XMLHttpRequest對(duì)象的方法
xmlHttp = new XMLHttpRequest();
}
if(!(xmlHttp)) { //未成功創(chuàng)建XMLHttpRequest對(duì)象
window.alert("創(chuàng)建XMLHttpRequest對(duì)象異常!");
}
}
//下拉列表項(xiàng)改變時(shí)的操作
function proChange(objVal) {
createXMLHttpRequest(); //創(chuàng)建XMLHttpRequest對(duì)象
document.getElementById("city").length = 1; //根據(jù)ID獲取指定元素,并賦值
xmlHttp.onreadystatechange = cityList; //指定onreadystatechange處理函數(shù)
var url="CityByXMLServlet?province="+objVal; //請(qǐng)求的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”元素對(duì)象集合
var _citySel = document.getElementById("city"); //根據(jù)ID獲取頁面中的select元素
for(var i=0;i<len.length;i++) { //遍歷XML數(shù)據(jù)并給select元素添加選項(xiàng)
var opt = document.createElement("OPTION"); //創(chuàng)建option對(duì)象
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>動(dòng)態(tài)加載組合框</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="">--請(qǐng)選擇--</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串的對(duì)象
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;
}
/**
*當(dāng)前Servelt的初始化方法. <br>
*
* @throws ServletException發(fā)生ServletExceptio時(shí)拋出
*/
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>
總結(jié)
以上所述是小編給大家介紹的Ajax實(shí)現(xiàn)動(dòng)態(tài)加載組合框的實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
- AJAX和jQuery動(dòng)態(tài)加載數(shù)據(jù)的實(shí)現(xiàn)方法
- DataTables+BootStrap組合使用Ajax來獲取數(shù)據(jù)并且動(dòng)態(tài)加載dom的方法(排序,過濾,分頁等)
- 使用PHP+AJAX讓W(xué)ordPress動(dòng)態(tài)加載文章的教程
- jQuery結(jié)合ajax實(shí)現(xiàn)動(dòng)態(tài)加載文本內(nèi)容
- php+ajax實(shí)現(xiàn)無刷新動(dòng)態(tài)加載數(shù)據(jù)技術(shù)
- 使用ajax+jqtransform實(shí)現(xiàn)動(dòng)態(tài)加載select
- Ajax動(dòng)態(tài)加載數(shù)據(jù)庫示例
- 用ajax動(dòng)態(tài)加載需要的js文件
- 利用Dojo和JSON建立無限級(jí)AJAX動(dòng)態(tài)加載的功能模塊樹
相關(guān)文章
SSH網(wǎng)上商城之使用ajax完成用戶名是否存在異步校驗(yàn)
這篇文章主要介紹了SSH網(wǎng)上商城之使用ajax完成用戶名是否存在異步校驗(yàn)的相關(guān)資料,需要的朋友可以參考下2015-12-12
如何創(chuàng)建ajax對(duì)象并兼容多個(gè)瀏覽器
這篇文章主要介紹了創(chuàng)建ajax對(duì)象并兼容多個(gè)瀏覽器方法簡單記錄,在某些情況下還是比較實(shí)用的,需要的朋友可以參考下2014-08-08
使用AJAX返回WebService里的集合具體實(shí)現(xiàn)
如何使用AJAX返回WebService里的集合,在本文將有一個(gè)完美的實(shí)現(xiàn),感興趣的朋友可以參考下哈,希望可以幫助到你2013-05-05
在(ASP/PHP/JSP/html/js)中禁止ajax緩存的方法集錦
禁止ajax緩存最簡單的辦法就是在js端直接生成一個(gè)隨機(jī)數(shù)了,但是有時(shí)會(huì)發(fā)現(xiàn)此方法不適用于post了,如果我們要禁止post 提交數(shù)據(jù)的ajax緩存需要怎么處理呢,下面我整理了很多關(guān)于禁止ajax緩存的例子2014-08-08
$.ajax傳JSON數(shù)據(jù)到后臺(tái)的注意事項(xiàng)小結(jié)
這篇文章主要介紹了$.ajax傳JSON數(shù)據(jù)到后臺(tái)的注意事項(xiàng),需要的朋友可以參考下2014-05-05

