基于Ajax的二级联动下拉菜单

全国城市三级级联菜单:Ajax (jQuery) 实现指南 本文还有配套的精品资源,点击获取 简介:Ajax结合jQuery库创建的全国城市三级级联菜单插件允许用户通过下拉选择快速筛选省份、城市和区县。此插件利用jQuery的简便API进行DOM操作和Ajax交互,无需页面重载即可动态更新数据。实现流程包括初始化菜单、监听选择事件、异步请求数据、处理并展示数据,以及优化用户体验。提供配置选项以适应不同需求。 1. Ajax... 阅读详情
很多朋友在做多级联动下拉菜单时都碰到了问题,Google上能找到的大部分也是基于javascript数组的实现,超多3级联动时,就会很复杂,甚至出现4维、5维的数组。这里介绍一个Ajax的方法,也是页面无刷新的,但是是从数据库实时查询的,在数据量大时较js数组的方法性能要好很多,实现起来也方便。

废话少说,直接看代码:
由于大家用的数据库五花八门,我就用几个数组来代替rs,在实际应用中只要把实时查询的结果集rs替换掉数据就可以了。

我这里采用了一个ajax的框架:DWR,这个是把java代码影射成js的一个工具。

index.htm
  1. <html>
  2.  
  3. <script src="/dwrajax/dwr/interface/ItemsBean.js"></script>
  4. <script src="/dwrajax/dwr/engine.js"></script>
  5. <script src="/dwrajax/dwr/util.js"></script>
  6.  
  7. <script language="javascript"> 
  8. function update1()
  9. {
  10.        ItemsBean.ClassList(createList1);
  11. }
  12. function createList1(data)
  13. {
  14.     DWRUtil.removeAllOptions("classid");
  15.     DWRUtil.addOptions("classid", data);
  16. }
  17.  
  18. function update2()
  19. {
  20.        ItemsBean.UserList(createList2,DWRUtil.getValue("classid"));
  21. }
  22. function createList2(data)
  23. {
  24.     DWRUtil.removeAllOptions("userid");
  25.     DWRUtil.addOptions("userid", data);
  26. }
  27. </script>
  28.  
  29. <head>
  30. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  31. <title>班级和学生Ajax级联下拉菜单</title>
  32. </head>
  33.  
  34. <body onload="update1()">
  35.  
  36. <form name="formform">
  37.     班级<select name="classid" id="classid" onchange="javascript:update2();"></select> 
  38.     学生<select name="userid" id="userid"></select>
  39. </form>
  40.  
  41. </body>
  42.  
  43. </html>


ItemsBean.java
  1. package org.baiyun;
  2.  
  3. import java.util.*;
  4. /**
  5.  *
  6.  * @author baiyun
  7.  */
  8. public class ItemsBean {
  9.     private String[] class1 = {"同学1","同学2","同学3","同学4","同学5","同学6"};
  10.     private String[] class2 = {"同学7","同学8","同学9","同学10"};
  11.     private String[] class3 = {"同学11","同学12","同学13","同学14","同学15","同学16","同学17"};
  12.     private String[] class4 = {"同学18","同学19","同学20"};
  13.     private String[] class5 = {"同学21","同学22","同学23","同学24","同学25","同学26"};
  14.     /** Creates a new instance of ItemsBean */
  15.     public ItemsBean() {
  16.     }
  17.     
  18.     public Map ClassList() {
  19.         Map reply = new LinkedHashMap();
  20.         reply.put("0", "所有");
  21.         reply.put("1", "班级1");
  22.         reply.put("2", "班级2");
  23.         reply.put("3", "班级3");
  24.         reply.put("4", "班级4");
  25.         reply.put("5", "班级5");
  26.         return reply;
  27.     }
  28.     
  29.     public Map UserList(String CLASSID) {
  30.         Map reply = new LinkedHashMap();
  31.         reply.put("0", "所有");
  32.         
  33.         // 这里用数组模拟数据库查询结果。
  34.         // 真实环境中,你只要将数据库查询结果放入到reply里面就可以了。
  35.         // reply的id就是返回后下拉框的option的value,reply的value就是返回后下拉框的option的text。
  36.         // 如: sql = "select * from users where classid=?";
  37.         if(CLASSID==null || CLASSID.equals("") || CLASSID.equals("0")){
  38.             //
  39.         }else if(CLASSID.equals("1")){
  40.             int id =1;
  41.             for(int i=0;i<class1.length;i++){
  42.                 reply.put(""+id, class1[i]);
  43.                 id++;
  44.             }
  45.         }else if(CLASSID.equals("2")){
  46.             int id =1;
  47.             for(int i=0;i<class2.length;i++){
  48.                 reply.put(""+id, class2[i]);
  49.                 id++;
  50.             }
  51.         }else if(CLASSID.equals("3")){
  52.             int id =1;
  53.             for(int i=0;i<class3.length;i++){
  54.                 reply.put(""+id, class3[i]);
  55.                 id++;
  56.             }
  57.         }else if(CLASSID.equals("4")){
  58.             int id =1;
  59.             for(int i=0;i<class4.length;i++){
  60.                 reply.put(""+id, class4[i]);
  61.                 id++;
  62.             }
  63.         }else if(CLASSID.equals("5")){
  64.             int id =1;
  65.             for(int i=0;i<class5.length;i++){
  66.                 reply.put(""+id, class5[i]);
  67.                 id++;
  68.             }
  69.         }
  70.         
  71.         return reply;
  72.     }
  73. }


web.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
  3.  
  4. <web-app>
  5.   <servlet>
  6.     <servlet-name>dwr-invoker</servlet-name>
  7.     <display-name>DWR Servlet</display-name>
  8.     <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
  9.     <init-param>
  10.       <param-name>debug</param-name>
  11.       <param-value>true</param-value>
  12.     </init-param>
  13.   </servlet>
  14.   <servlet-mapping>
  15.     <servlet-name>dwr-invoker</servlet-name>
  16.     <url-pattern>/dwr/*</url-pattern>
  17.   </servlet-mapping>
  18.  
  19.   <welcome-file-list>
  20.     <welcome-file>index.htm</welcome-file>
  21.   </welcome-file-list>
  22. </web-app>


dwr.xml: 是让js和java直接通讯,很神奇吧~ 这就是dwr的贡献。
  1. <?xml version="1.0" encoding="gbk"?>
  2. <!DOCTYPE dwr PUBLIC
  3.     "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
  4.     "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
  5.  
  6. <dwr>
  7.   <allow>
  8.     <create creator="new" javascript="ItemsBean">
  9.       <param name="class" value="org.baiyun.ItemsBean"/>
  10.     </create>
  11.  
  12.   </allow>
  13. </dwr>


就这么简单,运行以下试试看吧~。
若要实现3级、4级、5级...的下拉菜单,只要以此类推一级级延下去就可以了,也很简单的。

直接把附件解压放到Tomcat/webapps下可以直接运行。 附件:dwrajax.zip(295K) 
上面这个多级联动下拉菜单只是Ajax的一个很小的应用,我现在的项目里大量使用了Ajax,可以像Gmail一样查询、翻页等等都不用刷新整个页面,用户操作感觉非常好。
实现AJAX级联下拉菜单实战案例 本文还有配套的精品资源,点击获取 简介:AJAX是一种无需重新加载整个页面即可更新部分内容的Web技术。本实例演示了如何通过JavaScript实现3级级联下拉菜单,使得用户在选择一个下拉项时,下一级的下拉框能够根据选择动态地加载相关数据。通过使用XMLHttpRequest对象,此技术允许异步请求服务器获取数据并实时更新下拉选项。这个例子包含初始化XMLHttpReque... 阅读详情

相关推荐

Ajax实现java web 中下拉列表二级联动

ajax 我们也就讲过一个小例子,这是后来经老师指点后用老师的例子改的,希望对想实现二级联动的同学有所帮助.

ajax实例教程-----级联菜单

        关于ajax的特性,这里不再写了,去网上随便就能找到好多. 现在写一个用ajax和jsp来实现的动态菜单的实例.先感觉一下ajax是如何实现传说中的异步操作!       menu.html     html>head>META http-equiv=Content-Type content="text/html; charset=gb2312">LINK href="im

读书笔记 3369

Ajax实现的三级联动下拉菜单

struts2+jsp+json+javascript实现的三级下拉菜单,没有service和dao层,数据是虚拟的。需要的欢迎下载。项目直接导入myeclipse就可以使用。访问路径localhost:8080/ajax_day02_hw/proviencecityarea.jsp

[Ajax]用简易Ajax框架实现"省市二级联动下拉菜单"【转载】

原文地址:http://www.cnblogs.com/zhulei/archive/2007/06/06/773055.html操作环境:Visual Studio.Net2003操作系统:window Xp SP2 利用简易Ajax框架实现无刷新的省市二级联动的下拉菜单.其实很简单.关键在于处理服务器端返回的XML,对其进行拆分就OK了ASPX页面: MyDropDownList.

是梦境与我为邻! 2344

ajax实现下拉列表级联

利用ejb连接数据库,成功的实现ajax下拉列表级联,下拉列表中的数据从数据库中调用。

级联下拉菜单:级联表单下拉菜单

级联下拉菜单 jQuery插件,它允许您根据先前的选择来填充一组表单下拉菜单。 演示版 基本用法 要使用该插件而不覆盖任何默认设置,您需要使用多个下拉(选择)菜单创建表单的结构。 在以下示例中,我正在使用 <form> <select name="category" class="cascadingDropDown" data-group="product-1" data-target="make" data-url="data/make.json" data-replacement="co

ajax+php无刷新二级联动下拉菜单(省市联动)源码

<!--google_ad_client = "pub-4490194096475053";/* 内容页,300x250,第一屏 */google_ad_slot = "3685991503";google_ad_width = 300;google_ad_height = 250;// -->ajax.js /** * ajax无刷新二级联动下拉菜单(省市

管子(zero)的杂乱空间 2万+

JavaWeb开发之使用jQuery与Ajax实现动态联级菜单效果

主要介绍了JavaWeb开发之使用jQuery与Ajax实现动态联级菜单效果的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下

php ajax二级联下拉菜单,ThinkPHP和Ajax 实现二级联动的下拉菜单

这篇文章主要介绍了关于ThinkPHP和Ajax 实现二级联动的下拉菜单,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下联动菜单的数据存在数据库,可以随时通过对数据库添加删除修改改变菜单数据,而不需修改代码,同时,实现了2级后,也可以实现3级,4级。。。等关联菜单首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父i...

weixin_28716973的博客 237

debian mirrors 镜像源 riscv 64 赛昉 星光 starfive vf2 InRelease‘ doesn‘t support architecture ‘riscv64‘

debian mirrors 镜像 riscv 64 赛昉 星光2 starfive vf2 InRelease' doesn't support architecture 'riscv64'

qq_29758759的博客 1259

ENVI 5.3与IDL 8.5安装指南:从下载到激活的完整流程

本文提供了一份详细的ENVI 5.3与IDL 8.5安装教程,涵盖从获取安装包、运行主程序、安装许可证到关键文件替换的完整流程。指南重点解决了激活过程中的常见问题,并分享了个人实践经验,旨在帮助用户,特别是遥感图像处理初学者,一次性顺利完成软件部署,为后续的科研与开发工作奠定基础。

weixin_29213827的博客 545

php jq ajax 4个下拉框联动案列,jQuery Ajax 之二级联动下拉菜单示例【转】

二级联动下拉菜单,可以说是Ajax的经典应用了。我们用一个根据地区选择学校的例子来说明。介绍一下要准备的文件,一共3个。ajax_test.html:主要操作页面,在这里显示二级联动下拉菜单;get_local.php:取得地区名称的后台页面,返回所有的地区名称;get_school.php:取得学校名称的后台页面,接受地区名称和转码参数,返回该地区的学校名称。数据库的结构:表:school字段:...

weixin_34443842的博客 300

CANoe: Panel的上位机控制方法

本文介绍了不同于IG的报文控制方法,实现了Panel面板的控制模式。

Jonsnow3zz的博客 1407

php下拉列表 二级 联动,PHP+Ajax实现二级联动下拉菜单!

正文字体大小: 中PHP+Ajax实现二级联动下拉菜单!(2009-12-05 01:11:39)标签:杂谈数据库..................................................................................................................................................

weixin_27224119的博客 443

告别代码恐惧!用KRobot图形化编程,10分钟搞定Arduino巡线小车(附完整接线图)

本文介绍如何使用KRobot图形化编程工具快速搭建Arduino巡线小车,无需编写代码。从硬件准备到逻辑构建,详细讲解传感器数据处理、电机控制优化及高级功能扩展,帮助教育工作者和创客爱好者10分钟内完成项目。

weixin_30632089的博客 394

基于deepseek本地模型的本地知识库构建

通过以上步骤,你已经成功构建了一个基于 AnythingLLM 和 LM Studio 的本地知识库。这个系统不仅能够高效地存储和检索知识,还能结合强大的语言模型生成准确的回答。你可以根据自己的需求进一步扩展和优化这个系统,比如增加更多的文档格式支持、优化检索算法等。

qq_30178745的博客 1383

ajax 、json 动态实现二级联动下拉菜单的功能

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>二级联动实现</title> <script type="text/javascript" src="../js/j.

hey,欢迎浏览我的博客,希望能给你提供帮助。 527

Matlab之fdesign的应用说明

fdesign 是 MATLAB 中用于数字滤波器设计的工具(属于),它提供了一种系统化的方式来定义滤波器参数并生成相应的滤波器。指定滤波器的频率、幅度等参数。例如,设计一个低通滤波器:Fs = 1000;% 采样率 (Hz)% 通带截止频率% 阻带截止频率Apass = 1;% 通带衰减 (dB)Astop = 60;% 阻带衰减 (dB)

嵌入式老牛的博客 1052

ajax无刷新二级联动下拉菜单

演示DEMO地址:http://222.205.42.210/js/select/selectChange.html,ajax无刷新二级联动下拉菜单,用JavaScript操作XML文件的DOM,实现下拉菜单内容的动态显示。主要由3个文件组成:man.js ; selectChange.html ; serverDoc.xml/*main.js * ajax无刷新二级联动下拉菜单(

herberthui的专栏 6698

YOLOv8改进 | 主干篇 | 利用MobileNetV1替换Backbone(轻量化网络结构)

本文给大家带来的改进机制是MobileNetV1,其是专为移动和嵌入式视觉应用设计的轻量化网络结构。这些模型基于简化的架构,并利用深度可分离卷积构建轻量级深度神经网络,其引入了两个简单的全局超参数,用于在延迟和准确性之间进行有效的权衡。实验表明,MobileNets在资源和准确性的权衡方面表现出色,并在多种应用(如对象检测、细粒度分类、面部属性识别和大规模地理定位)中展现了其有效性,这个模型非常适合轻量化的读者来使用。适用检测目标:轻量化网络结构适合轻量化的读者。

Snu77的博客 3966

从SOMEIP看SOA,汽车电子电器架构的转变

从SOMEIP看SOA,汽车电子电器架构的转变

天赐好车的博客 241

用简易Ajax框架实现"省市二级联动下拉菜单"【原创】

操作环境:Visual Studio.Net2003操作系统:window Xp SP2 如果您有任何意见,请留下您宝贵的意见以便告知 利用简易Ajax框架实现无刷新的省市二级联动的下拉菜单.其实很简单.关键在于处理服务器端返回的XML,对其进行拆分就OK了 ASPX页面: MyDropDownList.aspx ,代码如下 <%@Pagelanguage="c#"...

weixin_30838921的博客 386

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

用简易Ajax框架实现"省市二级联动下拉菜单"

利用简易Ajax框架实现无刷新的省市二级联动的下拉菜单.其实很简单.关键在于处理服务器端返回的XML,对其进行拆分就OK了 ASPX页面: MyDropDownList.aspx ,代码如下 <%@Pagelanguage="c#"Codebehind="MyDropDownList.aspx.cs"AutoEventWireup="false"Inherits...

weixin_30878501的博客 168

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: 通过javascript实现动态添加删除表格的行
下一篇: 选择比努力更重要!
danning
博客等级 码龄22年 5粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值