溫馨提示×

溫馨提示×

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

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

Ajax中二級聯(lián)動菜單的實現(xiàn)原理是什么

發(fā)布時間:2021-08-09 16:20:51 來源:億速云 閱讀:117 作者:Leah 欄目:web開發(fā)

Ajax中二級聯(lián)動菜單的實現(xiàn)原理是什么,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

index.jsp:

<%@ page language="java" pageEncoding="UTF-8"%> 
<html> 
<head> 
<title>二級菜單聯(lián)動演示</title> 
<script type="text/javascript"> 
var req; 
window.onload=function() 
{//頁面加載時的函數(shù) 
} 
function Change_Select(){//當(dāng)?shù)谝粋€下拉框的選項發(fā)生改變時調(diào)用該函數(shù) 
var province = document.getElementById('province').value; 
var url = "select?id="+ escape(province); 
if(window.XMLHttpRequest){ 
req = new XMLHttpRequest(); 
}else if(window.ActiveXObject){ 
req = new ActiveXObject("Microsoft.XMLHTTP"); 
} 
if(req){ 
req.open("GET",url,true); 
//指定回調(diào)函數(shù)為callback 
req.onreadystatechange = callback; 
req.send(null); 
} 
} 
//回調(diào)函數(shù) 
function callback(){ 
if(req.readyState ==4){ 
if(req.status ==200){ 
parseMessage();//解析XML文檔 
}else{ 
alert("不能得到描述信息:" + req.statusText); 
} 
} 
} 
//解析返回xml的方法 
function parseMessage(){ 
var xmlDoc = req.responseXML.documentElement;//獲得返回的XML文檔 
var xSel = xmlDoc.getElementsByTagName('select'); 
//獲得XML文檔中的所有<select>標(biāo)記 
var select_root = document.getElementById('city'); 
//獲得網(wǎng)頁中的第二個下拉框 
select_root.options.length=0; 
//每次獲得新的數(shù)據(jù)的時候先把每二個下拉框架的長度清0 
for(var i=0;i<xSel.length;i++){ 
var xValue = xSel[i].childNodes[0].firstChild.nodeValue; 
//獲得每個<select>標(biāo)記中的第一個標(biāo)記的值,也就是<value>標(biāo)記的值 
var xText = xSel[i].childNodes[1].firstChild.nodeValue; 
//獲得每個<select>標(biāo)記中的第二個標(biāo)記的值,也就是<text>標(biāo)記的值 
var option = new Option(xText, xValue); 
//根據(jù)每組value和text標(biāo)記的值創(chuàng)建一個option對象 
try{ 
select_root.add(option);//將option對象添加到第二個下拉框中 
}catch(e){ 
} 
} 
} 
</script> 
</head> 
<body> 
<div align="center"> 
<form name="form1" method="post" action=""> 
<table width="70%" border="0" cellspacing="0" cellpadding="0"> 
<tr> 
<td align="center"> 
二級聯(lián)動示例 
</td> 
</tr> 
<tr> 
<td> 
<select name="province" id="province" onChange="Change_Select()"> 
<!--第一個下拉菜單--> 
<option value="0"> 
請選擇 
</option> 
<option value="1"> 
北京 
</option> 
<option value="2"> 
天津 
</option> 
<option value="3"> 
山東 
</option> 
</select> 
<select name="city" id="city"> 
<!--第二個下拉菜單--> 
<option value="0"> 
請選擇 
</option> 
</select> 
</td> 
</tr> 
<tr> 
<td> 
</td> 
<tr> 
</table> 
</form> 
</div> 
</body> 
</html>


SelectServlet: 

package com; 
import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
/*** 
* 
* @author zdw 
* 
*/ 
public class SelectServlet extends HttpServlet 
{ 
private static final long serialVersionUID = 1L; 
public SelectServlet() 
{ 
super(); 
} 
public void destroy() 
{ 
super.destroy(); 
} 
public void doGet(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException 
{ 
// response.setCharacterEncoding("GBK"); 
response.setContentType("text/xml"); 
response.setHeader("Cache-Control", "no-cache"); 
request.setCharacterEncoding("GBK"); 
response.setCharacterEncoding("UTF-8"); 
String targetId = request.getParameter("id").toString(); 
System.out.println(targetId); 
// 獲得請求中參數(shù)為id的值 
String xml_start = "<selects>"; 
String xml_end = "</selects>"; 
String xml = ""; 
if (targetId.equalsIgnoreCase("0")) 
{ 
xml = "<select><value>0</value><text>請選擇</text></select>"; 
} else if (targetId.equalsIgnoreCase("1")) 
{ 
xml = "<select><value>1</value><text>昌平</text></select>"; 
xml += "<select><value>2</value><text>豐臺</text></select>"; 
xml += "<select><value>3</value><text>海淀</text></select>"; 
xml += "<select><value>4</value><text>朝陽</text></select>"; 
} else if (targetId.equalsIgnoreCase("2")) 
{ 
xml = "<select><value>1</value><text>塘沽區(qū)</text></select>"; 
xml += "<select><value>2</value><text>漢沽區(qū)</text></select>"; 
xml += "<select><value>3</value><text>大港區(qū)</text></select>"; 
xml += "<select><value>4</value><text>東麗區(qū)</text></select>"; 
} else 
{// 如果是3,則返回下面的字符 
xml = "<select><value>1</value><text>濟南</text></select>"; 
xml += "<select><value>2</value><text>青島</text></select>"; 
xml += "<select><value>3</value><text>淄博</text></select>"; 
xml += "<select><value>4</value><text>棗莊</text></select>"; 
} 
String last_xml = xml_start + xml + xml_end; 
response.getWriter().write(last_xml); 
} 
public void doPost(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException 
{ 
doGet(request, response); 
} 
public void init() throws ServletException 
{ 
} 
}


web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
<servlet> 
<servlet-name>SelectServlet</servlet-name> 
<servlet-class>com.SelectServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
<servlet-name>SelectServlet</servlet-name> 
<url-pattern>/select</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
<welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 
</web-app>

看完上述內(nèi)容,你們掌握Ajax中二級聯(lián)動菜單的實現(xiàn)原理是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責(zé)聲明:本站發(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