AJAX基于XML二级联动下拉菜单<jsp>

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>   
  	 <title>基于XML的二级菜单联动</title>
  </head>
  
  <body>
    <select id="province">
    	<option>选择省份</option>
    	<option>安徽省</option>
    	<option>江苏省</option>
    	<option>广东省</option>
    	<option>四川省</option>
    </select>
    <select id="city">
    	<option>选择城市</option>
    </select>
    
    <script type="text/javascript">
    	//对省份绑定改变事件 
    	document.getElementById("province").onchange = function(){
    	
    		//获取时将城市获取进行清空一次
    		//获取city节点
    		var selectElement = document.getElementById("city");
    		var index = selectElement.length;
    		//保留第一个选项
    		if(index>0){
    			for(var i=index-1;i>0;i--){
    				//删除之前的节点 
    				selectElement.removeChild(selectElement.options[i]);
    			}
    		}
    		
    		//创建AJAX引擎
    		var xhr = createAjax();
    		//设置请求方式
    		method = "POST";
    		//请求路径
    		url = " ${pageContext.request.contextPath}/XmlProcinceCityServlet?time="+new Date().getTime();
    		//获取当前选择的内容 
    		var province = this[this.selectedIndex].value;
    		var content = "province="+province;
    		xhr.open(method,url);
    		//设置浏览器自动编码
    		xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");		
    		xhr.send(content);
    		
    		//获取服务器的响应
    		xhr.onreadystatechange = function(){
				if(xhr.readyState==4){
					if(xhr.status==200){
						//获取服务器返回的XML
						var xmlString = xhr.responseXML;
						//解析XML文档
						//获取city节点
						var cityElement = xmlString.getElementsByTagName("city");
						var size = cityElement.length;
						for(var i=0;i<size;i++){
							//获取节点的内容 
							var value = cityElement[i].firstChild.nodeValue;
							//创建option节点
							var optionElement = document.createElement("option");
							
							//为节点设置值 
							optionElement.innerHTML = value;
							//获取城市下拉 
							var selectElement = document.getElementById("city");
							//添加节点 
							selectElement.appendChild(optionElement);		
						}	
					}
				}
			}
    		
    		
    	}
    	
    	
    	//创建AJAX引擎对象
    	function createAjax(){
    		var xhr = null;
    		try {
    			//针对IE
				xhr = new ActiveXObject("microsoft.xmlhttp");
			} catch (e) {
				try {
				//针对非IE
				xhr = new XMLHttpRequest();
					
				} catch (e) {
					alert("请使用支持AJAX主流浏览器.");
				}
			}
    		
    		return xhr;
    	}
    	
    </script>
  </body>
</html>









Serlvet内容如下:
<span style="white-space:pre">	</span>

ASP 加数据库 四级菜单联动 var m_oXMLDoc = new ActiveXObject("Microsoft.XMLDOM"); var m_sBaseSrc = "Tree.asp?ParentCode="; //源码爱好者(http://www.codefans.net) function BindSelect( strXMLSrc , objSelectName, defaultVal) { m_oXMLDoc.async = true; m_oXMLDoc.onreadystatechange = Function( "fnLoadComplete('" + objSelectName + "', '" + defaultVal + "');" ); m_oXMLDoc.load( strXMLSrc ); } function fnLoadComplete(objSelectName, defaultVal) { var objSelect = document.all[objSelectName]; var aryXMLNodes; var node; if (objSelect == null) return; try { var iReadyState = m_oXMLDoc.readyState; } catch(e) { return; } if( iReadyState != 4 ) return; if( m_oXMLDoc != null && m_oXMLDoc.xml != "" ) { objSelect.length = 0; aryXMLNodes = m_oXMLDoc.documentElement.selectNodes("TreeNode"); objSelect.options[0] = new Option("==全部=="); for (var i=0; i 1) { SetSelectedValue(objSelect, defaultVal) } if(objSelect.ChildSelectName != null) { objSelect.onchange = Function( "var val = this.options[this.selectedIndex].value;BindSelect(m_sBaseSrc+val, '"+objSelect.ChildSelectName+"', '"+defaultVal+"');if(val!='')document.all.MaterialClassCode.value=val;" ); objSelect.fireEvent("onchange"); } else { objSelect.onchange = Function( "var val = this.options[this.selectedIndex].value;if(val!='')document.all.MaterialClassCode.value=val;" ); } } } function InitSelect(defaultVal) { document.all.MaterialClassCode.value = ""; BindSelect( m_sBaseSrc + "00", "MaterialClass1", defaultVal); } function Equality(val1,val2) { if (val1.length < val2.length || val2 == "") return false; return (val1.substr(0,val2.length) == val2) } function SetSelectedValue(oSel,val) { if (val == null) return; for(var i=0; i<oSel.length; i++) { if (Equality(val, oSel.options[i].value)) { oSel.selectedIndex = i; if(oSel.ChildSelectName == null) oSel.fireEvent("onchange"); break; } } } window.onload = function(){InitSelect();}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值