下拉联动的功能可以说非常的常用,例如在选择省、市等信息的时候;或者在选择大类、小类的时候。总之,下拉联动很常用。今天就跟大家分享一个简单的二级下拉联动的功能。

大类下拉框:页面加载的时候就初始化大类的下拉选项,通过后台代码去数据库里面取得数据(当然像省市这样不变的内容可以直接给值),然后加载到下拉选项中。

<select name="region" class="select1" id="BigClass" onchange="selectProv(this)">

    <option value="0">--全部--</option>
<%
Map map = ClientManager.getInstance().getRegionList();
for (Iterator iter=map.entrySet().iterator(); iter.hasNext();) {
Map.Entry entry = (Map.Entry)iter.next();
%>
<option value="<%=entry.getKey() %>"><%=entry.getValue() %></option>
<%
}
%>
</select>

小类下拉框:小类的下拉选项是通过Ajax将所选大类的内容异步提交到一个Servlet,然后返回相应的小类内容,最后加载到小类下拉选项中。

<select name="province" class="select1" id="SmallClass">
<option value="0">--全部--</option>
</select>

获取并加载小类下拉框的JS代码:

<script type="text/javascript">
function selectProv(field) {
var xmlHttp = null;
//表示当前浏览器不是ie,如ns,firefox
if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
} else if(window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
var url = "${pageContext.request.contextPath}/servlet/SelectProvServlet?regionId=" + trim(field.value) + "&time=" + new Date().getTime(); //设置请求方式为GET,设置请求的URL,设置为异步提交
xmlHttp.open("GET", url, true); xmlHttp.onreadystatechange=function() {
//Ajax引擎状态为成功
if(xmlHttp.readyState == 4) {
//HTTP协议状态为成功
if(xmlHttp.status == 200) {
var doc = xmlHttp.responseXML;
var items = doc.getElementsByTagName("item");
//取得小类下拉列表
var provSelect = document.getElementById("SmallClass");
//清除小类下拉列表中的值
provSelect.options.length = 0;
var o = new Option("--全部--", 0);
provSelect.add(o);
for (var i=0; i<items.length; i++) {
var id =items[i].childNodes[0].firstChild.nodeValue;
var name = items[i].childNodes[1].firstChild.nodeValue;
var o = new Option(name, id);
provSelect.add(o);
}
}else {
alert("请求失败,错误码=" + xmlHttp.status);
}
}
}; //将设置信息发送到Ajax引擎
xmlHttp.send(null);
}
</script>

具体怎么从数据库里取数据就不在这里赘述了,就是一个普通的查询,比较简单。二级联动、三级联动、多级联动都是一样的,就是预先加载一个下拉框的内容,然后,根据第一个的所选内容加载后面的下拉框选项,以此类推。掌握了二级联动,其他的也就不在话下了,也就是多加几个下拉框的事儿。

OK,到这里你是不是已经蠢蠢欲动、按耐不住了?心动不如行动,那就赶快动手试一试吧!欢迎交流。

菜鸟学Java(七)——Ajax+Servlet实现无刷新下拉联动的更多相关文章

  1. JQuery实现无刷新下拉加载图片

          最近做的一个项目需要做页面无刷新下拉加载图片,调研了一番,大多都采用检测滚动条达到底部,然后利用ajax加载下一页数据对页面数据进行添加,根据这一逻辑,自己写了一个,具体代码如下: JQu ...

  2. ajax完成list无刷新返回

    ajax完成list无刷新返回 ajax无刷新技术总结,以下是一段我写的ajax应用的js脚本.其中提交的data刚开始我采用的是$('#formId').serialize();但是出现乱码问题,为 ...

  3. nodejs利用ajax实现网页无刷新上传图片

    nodejs利用ajax实现网页无刷新上传图片 标签(空格分隔): nodejs 通常情况下上传图片是要通过提交form表单来实现的,但是这又不可避免的产生了网页转. 利用ajax技术和FormDat ...

  4. 本篇文章主要是对jquery+ajax+C#实现无刷新操作数据库数据的简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助

    我们知道同步执行和异步执行的区别,为了更好的提高用户的体验,我们都会采用异步方式去处理一些问题,毕竟单线程的同步可能回造成卡死等现象,很不友好,所以可以使用ajax来完成用户的体验,现在我们就来说说如 ...

  5. ajax实现无刷新两级联动DropDownList

    ajax实现的无刷新三级联动 http://zhangyu028.cnblogs.com/articles/310568.html 本文来自小山blog:http://singlepine.cnblo ...

  6. AJAX二级下拉联动【XML方式】

    AJAX二级下拉联动案例 我们在购物的时候,常常需要我们来选择自己的收货地址,先选择省份,再选择城市- 有没有发现:当我们选择完省份的时候,出现的城市全部都是根据省份来给我们选择的.这是怎么做到的呢? ...

  7. Ajax案例-基于XML,以POST方式,完成省份-城市二级下拉联动

    <%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC & ...

  8. Jquery ajax 绑定multiselect多选下拉选项,同时异步执行返回值

    Jquery ajax 绑定multiselect多选下拉选项,同时异步执行获取返回值 function load(mslt_employees,belongto,mark) {//传入$(#ID) ...

  9. 菜鸟学Java(十五)——Java反射机制(二)

    上一篇博文<菜鸟学编程(九)——Java反射机制(一)>里面,向大家介绍了什么是Java的反射机制,以及Java的反射机制有什么用.上一篇比较偏重理论,理论的东西给人讲出来总感觉虚无缥缈, ...

随机推荐

  1. Zuul Timeouts

    19.13 Zuul Timeouts 19.13.1 Service Discovery Configuration If Zuul is using service discovery there ...

  2. Android中如何让DialogFragment全屏(DialogFragment fullscreen)

    这个问题很让人纠结,因为我要在popopwindows里面使用fragment,但是在popopwindows里面找不到它的父控件,于是转战使用DialogFragment,但是让它全屏是一件很头疼的 ...

  3. Linux-LVS为何不能完全替代DNS轮询

    转自:链接 上一篇文章“一分钟了解负载均衡的一切”引起了不少同学的关注,评论中大家争论的比较多的一个技术点是接入层负载均衡技术,部分同学持这样的观点: 1)nginx前端加入lvs和keepalive ...

  4. 抗衡Win Linux全凭这些桌面环境

    2012年01月25日 元老级桌面环境KDE     Linux操作系统最早使用在服务器上,而桌面操作系统并不是Linux的重点突围.但是,近几年Linux桌面操作系统有崛起的趋势,抢夺了部分桌面操作 ...

  5. PHP 5.3版本上MS SQL Server的连接配置

    折腾了好久,最后终于连接成功了! 注:我使用的的phpStudy. php.ini中配置: ;这是php中带的驱动 extension=php_sqlsrv.dll extension=php_pdo ...

  6. MATLAB 的输入输出命令

    MATLAB 的输入输出命令: >> A='woshi'; >> disp(A) woshi fscanf和fprintf命令的行为像C scanf和printf函数.他们支持 ...

  7. 【LeetCode】213. House Robber II

    House Robber II Note: This is an extension of House Robber. After robbing those houses on that stree ...

  8. MySQL备份与还原详细过程示例

    MySQL备份与还原详细过程示例 一.MySQL备份类型 1.热备份.温备份.冷备份 (根据服务器状态) 热备份:读.写不受影响: 温备份:仅可以执行读操作: 冷备份:离线备份:读.写操作均中止: 2 ...

  9. 【转】25.windbg-!gle、g(错误码、g系列)

    !gle !gle 扩展显示当前线程的最后一个错误码.这个太好记了,getlasterror取首字母: <span style=:> !gle LastErrorValue: (Win32 ...

  10. 收集一些常用Javascripot

    获取一组单选框当前选择值: $("input[name='radGende']:checked").val();