菜鸟学Java(七)——Ajax+Servlet实现无刷新下拉联动
下拉联动的功能可以说非常的常用,例如在选择省、市等信息的时候;或者在选择大类、小类的时候。总之,下拉联动很常用。今天就跟大家分享一个简单的二级下拉联动的功能。
大类下拉框:页面加载的时候就初始化大类的下拉选项,通过后台代码去数据库里面取得数据(当然像省市这样不变的内容可以直接给值),然后加载到下拉选项中。
<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实现无刷新下拉联动的更多相关文章
- JQuery实现无刷新下拉加载图片
最近做的一个项目需要做页面无刷新下拉加载图片,调研了一番,大多都采用检测滚动条达到底部,然后利用ajax加载下一页数据对页面数据进行添加,根据这一逻辑,自己写了一个,具体代码如下: JQu ...
- ajax完成list无刷新返回
ajax完成list无刷新返回 ajax无刷新技术总结,以下是一段我写的ajax应用的js脚本.其中提交的data刚开始我采用的是$('#formId').serialize();但是出现乱码问题,为 ...
- nodejs利用ajax实现网页无刷新上传图片
nodejs利用ajax实现网页无刷新上传图片 标签(空格分隔): nodejs 通常情况下上传图片是要通过提交form表单来实现的,但是这又不可避免的产生了网页转. 利用ajax技术和FormDat ...
- 本篇文章主要是对jquery+ajax+C#实现无刷新操作数据库数据的简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
我们知道同步执行和异步执行的区别,为了更好的提高用户的体验,我们都会采用异步方式去处理一些问题,毕竟单线程的同步可能回造成卡死等现象,很不友好,所以可以使用ajax来完成用户的体验,现在我们就来说说如 ...
- ajax实现无刷新两级联动DropDownList
ajax实现的无刷新三级联动 http://zhangyu028.cnblogs.com/articles/310568.html 本文来自小山blog:http://singlepine.cnblo ...
- AJAX二级下拉联动【XML方式】
AJAX二级下拉联动案例 我们在购物的时候,常常需要我们来选择自己的收货地址,先选择省份,再选择城市- 有没有发现:当我们选择完省份的时候,出现的城市全部都是根据省份来给我们选择的.这是怎么做到的呢? ...
- Ajax案例-基于XML,以POST方式,完成省份-城市二级下拉联动
<%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC & ...
- Jquery ajax 绑定multiselect多选下拉选项,同时异步执行返回值
Jquery ajax 绑定multiselect多选下拉选项,同时异步执行获取返回值 function load(mslt_employees,belongto,mark) {//传入$(#ID) ...
- 菜鸟学Java(十五)——Java反射机制(二)
上一篇博文<菜鸟学编程(九)——Java反射机制(一)>里面,向大家介绍了什么是Java的反射机制,以及Java的反射机制有什么用.上一篇比较偏重理论,理论的东西给人讲出来总感觉虚无缥缈, ...
随机推荐
- mysql基础拓扑图
存在的意义,就是体验差异! 01.mysql架构图 02.账户认证流程 03.mysql逻辑结构
- CSS3 flex的使用方法
display:flex; align-items://水平对齐方式 justify-content://垂直对齐方式 flex://盒子所占大小(如果你盒子里面只有两个div,那么你设置其中之一个f ...
- linux shell 脚本攻略学习14--head命令详解,tail命令详解
当要查看上千行的大文件时,我们可不会用cat命令把整个文件内容给打印出来,相反,我们可能只需要看文件的一小部分地内容(例如文件的前十行和后十行),我们也有可能需要打印出来前n行或后n行,也有可能打印除 ...
- 用UltraEdit判断打开文件的编码类型 用UltraEdit或notepad记事本查看文件编码格式 用UltraEdit查看当前文件编码
用UltraEdit查看当前文件编码 想判断文件的编码类型? 用强大的UltraEdit-32软件: UltraEdit-32的状态栏可以显示文件的编码类型,详细情况如下: ANSI/ANSCI--- ...
- atexit函数和exit函数的理解
按照ISO C的规定,一个进程可以登记多达32个函数,这些函数将由exit自动调用,通常这32个函数被称为终止处理程序,并调用atexit函数来登记这些函数. 我们通常认为C语言的起始函数是main函 ...
- HDU 4006 The kth great number (优先队列)
The kth great number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Oth ...
- SQL表之间复制数据、选出随机几条数据、删除重复数据、取得自增长列等操作
--表之间数据复制 SELECT* INTO yozhu FROM yo --复制一份表 SELECT* INTO yozhu1 FROM yo where 1<>1 --只复制表结构,无 ...
- 豆瓣上9分以上的IT书籍-编程技术篇
在豆瓣上9分以上的IT书籍-编程语言篇中,收集了很多优秀的编程语言书籍,也得到了不少读者的喜欢.不过也有一些读者留言说某某书为什么没有,一种是因为某些书并不算讲某种编程语言的,一种是由于豆瓣9分以上这 ...
- MPU6050陀螺仪和加速度计的校准
加速度计和陀螺仪的校准: 在传感器静止不动水平放置时,测出陀螺仪和加速度计各轴的偏移值,保存.以后每次上电调用dmp_set_xx_bias()就行了. u8 run_self_test(void) ...
- jQuery的prop和attr的区别,及判断复选框是否选中
jQuery的prop和attr的区别 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法. 参数有区别,att ...