这个一个ajax的经典示例,也是ajax的长处所在。不多说了,下面来看代码。
项目结构图:
index.jsp:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><%@pagelanguage="java"contentType="text/html;charset=utf-8"%>
<html>
<head>
<title>MyJSP'index.jsp'startingpage</title>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8">
<SCRIPTtype="text/javascript">
varreq;
window.onload=function(){
}
functionChange_Select()
{
varzhi=document.getElementById('hero').value;
varurl="select?id="+escape(zhi);
if(window.XMLHttpRequest)
{
req=newXMLHttpRequest();
}elseif(window.ActiveXObject)
{
req=newActiveXObject("Microsoft.XMLHTTP");
}
if(req)
{
req.open("GET",url,true);
req.onreadystatechange=callback;
req.send(null);
}
}
functioncallback()
{
if(req.readyState==4)
{
if(req.status==200)
{
parseMessage();
}else{
alert("Notabletoretrievedescription"+req.statusText);
}
}
}
functionparseMessage()
{
varxmlDoc=req.responseXML.documentElement;
varxSel=xmlDoc.getElementsByTagName('select');
varselect_root=document.getElementById('skill');
select_root.options.length=0;
for(vari=0;i<xSel.length;i++)
{
varxValue=xSel[i].childNodes[0].firstChild.nodeValue;
varxText=xSel[i].childNodes[1].firstChild.nodeValue;
varoption=newOption(xText,xValue);
try{
select_root.add(option);
}catch(e){
}
}
}
</SCRIPT>
</head>
<body>
<divalign="center">
<formname="form1"method="post"action="">
<TABLEwidth="70%"boder="0"cellspacing="0">
<TR>
<TDalign="center">DoubleSelectBox</TD>
</TR>
<TR>
<TD>
<SELECTname="hero"id="hero"onChange="Change_Select()">
<OPTIONvalue="0">Unbounded</OPTION>
<OPTIONvalue="1">D.K.</OPTION>
<OPTIONvalue="2">NEC.</OPTION>
<OPTIONvalue="3">BOSS</OPTION>
</SELECT>
<SELECTname="skill"id="skill">
<OPTIONvalue="0">Unbounded</OPTION>
</SELECT>
</TD>
</TR>
<TR><td> </td></TR>
</TABLE>
</form>
</div>
</body>
</html>
SelectServlet.java:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->packagecom;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
publicclassSelectServletextendsHttpServlet{
/**
*Constructoroftheobject.
*/
publicSelectServlet(){
super();
}
/**
*Destructionoftheservlet.<br>
*/
publicvoiddestroy(){
super.destroy();//Justputs"destroy"stringinlog
//Putyourcodehere
}
/**
*ThedoGetmethodoftheservlet.<br>
*
*Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget.
*
*@paramrequesttherequestsendbytheclienttotheserver
*@paramresponsetheresponsesendbytheservertotheclient
*@throwsServletExceptionifanerroroccurred
*@throwsIOExceptionifanerroroccurred
*/
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType("text/xml");
response.setHeader("Cache-Control","no-cache");
StringtargetId=request.getParameter("id").toString();
Stringxml_start="<selects>";
Stringxml_end="</selects>";
Stringxml="";
if(targetId.equalsIgnoreCase("0")){
xml="<select><value>0</value><text>Unbounded</text></select>";
}elseif(targetId.equalsIgnoreCase("1")){
xml="<select><value>1</value><text>ManaBurn</text></select>";
xml+="<select><value>2</value><text>DeathCoil</text></select>";
xml+="<select><value>3</value><text>UnholyAura</text></select>";
xml+="<select><value>4</value><text>UnholyFire</text></select>";
}elseif(targetId.equalsIgnoreCase("2")){
xml="<select><value>1</value><text>Corprxplode</text></select>";
xml+="<select><value>2</value><text>RaiseDead</text></select>";
xml+="<select><value>3</value><text>BrillianceAura</text></select>";
xml+="<select><value>4</value><text>AimAura</text></select>";
}else{
xml="<select><value>1</value><text>RainofChaos</text></select>";
xml+="<select><value>2</value><text>FingerofDeath</text></select>";
xml+="<select><value>3</value><text>Bash</text></select>";
xml+="<select><value>4</value><text>SummonDoom</text></select>";
}
Stringlast_xml=xml_start+xml+xml_end;
response.getWriter().write(last_xml);
}
/**
*ThedoPostmethodoftheservlet.<br>
*
*Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost.
*
*@paramrequesttherequestsendbytheclienttotheserver
*@paramresponsetheresponsesendbytheservertotheclient
*@throwsServletExceptionifanerroroccurred
*@throwsIOExceptionifanerroroccurred
*/
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
/**
*Initializationoftheservlet.<br>
*
*@throwsServletExceptionifanerroroccure
*/
publicvoidinit()throwsServletException{
//Putyourcodehere
}
}
web.xml:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><?xmlversion="1.0"encoding="UTF-8"?>
<web-appversion="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>
运行结果图:
分享到:
相关推荐
二级联动下拉框是指两个下拉框之间存在依赖关系,当用户在第一个下拉框中做出选择时,第二个下拉框的内容会根据选择进行更新。这种功能通常通过JavaScript或AJAX与服务器进行交互来实现。 1. **HTML结构**:首先,...
5. Ajax:ASP.NET MVC支持Ajax操作,使用Ajax.BeginForm或jQuery的$.ajax方法,可以实现无刷新更新页面部分内容,这对于二级联动下拉框的实时更新至关重要。 6. 数据绑定:在ASP.NET MVC中,可以使用MVVM(Model-...
- `51CTO下载-ajax++jsp二级联动下拉框.txt`: 这个文本文件可能提供了实现JSP与Ajax结合的二级联动下拉框的代码示例或步骤说明。 - `51CTO下载-ajax实现无刷新查询.txt`: 文件内容可能涉及如何使用Ajax实现无刷新...
在Web开发中,二级或三级联动下拉框是一种常见的交互设计,主要用于展示层次关系的数据,如省份-城市-区县的区域选择。本教程将详细讲解如何使用Ajax和Servlet技术来实现这一功能。 首先,我们需要了解Ajax...
在我们的案例中,可能会有一个插件专门处理三级联动下拉框的逻辑。 **二、AJAX技术** AJAX(Asynchronous JavaScript and XML)是一种在无需刷新整个页面的情况下,能够更新部分网页的技术。在我们的场景中,当用户...
本文将深入探讨如何利用Ajax实现无限级联动下拉框的功能。 一、Ajax基础概念 Ajax的核心是通过JavaScript创建XMLHttpRequest对象,它允许在后台与服务器进行异步数据交换。JavaScript调用XMLHttpRequest对象的open...
在网页设计和开发中,"二级联动下拉框"是一种常见的交互元素,它通常用于实现多级选择或者关联数据的筛选。例如,在选择省份时,第一个下拉框会选择省份,当选择一个省份后,第二个下拉框会动态加载并显示该省份的...
在网页开发中,AJAX(Asynchronous JavaScript and XML)二级下拉框联动是一种常见的交互设计,用于提升用户体验,尤其在处理...通过学习和实践这个案例,开发者可以更好地理解和掌握AJAX二级下拉框联动的实现方法。
在IT领域,"AJAX版省市区三级联动下拉框"是一种常见的前端交互设计,尤其在网站表单中,用于用户选择地理位置时。这个技术基于AJAX(Asynchronous JavaScript and XML),它允许网页在不刷新整个页面的情况下与...
在提供的`fzzx.zip`压缩包中,包含了一个名为`a.html`的文件,这个文件很可能是用来展示如何实现layui下拉框二级联动的示例代码。打开这个HTML文件,我们可以看到一个包含两个下拉框的页面,第一个下拉框(一级)...
Smarty + Ajax 下拉菜单二级联动: 1. 建立数据库ajaxtest (使用utf8) 2. 进行conn.php 修改root密码 3. 导入表 product.sql --- 主产品 4. 导入表 producttest.sql -- 二级产品 弄好后运行:...
在这个特定的场景中,我们讨论的是如何使用Ajax实现二级下拉框的联动,以及涉及到的技术如Servlet、Java和XMLHttp。 首先,二级下拉框联动通常用于地理信息的选择,例如省份选择后,城市下拉框自动更新对应省份的...
在网页开发中,"市区二级联动下拉框"是一个常见的功能需求,特别是在用户需要选择地址时,例如填写收货地址。这种设计允许用户先选择省份(一级),然后根据选择的省份加载对应的市(二级)列表,以此提高用户体验,...
在网页设计和开发中,"三级联动下拉框"是一种常见的交互元素,它通常用于实现多级关联选择,比如省份-城市-区县的选择。这种功能可以极大地提高用户体验,尤其是在处理大量分类信息时。下面我们将深入探讨这个话题,...
【Ajax实现二级下拉框与用户名校验】 Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。在本工程文件中,主要涉及到两个关键应用场景:二级下拉框的联动效果和...
**Ajax实现下拉框三级联动**是Web开发中一种常见的交互设计,主要用于提高用户体验,让用户在选择一项数据时,能够即时地看到与之关联的下级数据,而无需等待整个页面重新加载。这种技术通常应用于地址选择、产品...
本文将详细讨论“下拉框二级联动”这一主题,以及如何利用AJAX和JSON技术来实现这一功能。 首先,我们要理解什么是二级联动。在多级选择的场景下,二级联动指的是当用户在一个下拉框(Dropdown)中做出选择时,第二...
总结来说,"Asp+xml+数据库 - 四级联动下拉框"的实现涉及ASP服务器端脚本处理数据,XML作为数据交换格式,以及数据库来存储和检索菜单信息。通过合理的编程和交互设计,四级联动下拉框能有效地帮助用户导航复杂的...