jQuery+jsp实现省市县三级联动效果(附源码)


Posted in Javascript onDecember 03, 2015

本文实例讲述了jQuery+jsp实现省市县三级联动效果的方法。分享给大家供大家参考,具体如下:

在这里,用MySQL数据库存储了全国所有的省市县地区信息(点击此处下载源代码)

使用过的jar包

google的Gson.jar
mysql-connector-java-5.1.13-bin.jar

将实验图贴出来:

jQuery+jsp实现省市县三级联动效果(附源码)

显示页面index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 <base href="<%=basePath%>"> 
 <title>省市区三级联动下拉菜单</title>
 <script type="text/javascript" src="<%=path %>/js/jquery/jquery-1.7.min.js"></script>
 <script type="text/javascript" src="<%=path %>/js/json/json-minified.js"></script>
 </head>
 <body>
 <table>
 <tr>
 <td>
 省份:
 <select name="province" id="province" onchange="onSelectChange(this,'city');"></select>
 城市:
 <select name="city" id="city" onchange="onSelectChange(this,'district');">
  <option value="">请选择</option>
 </select>
 区(县):
 <select name="district" id="district">
  <option value="">请选择</option>
 </select>
 </td>
 </tr>
 </table>
 </body>
</html>
<script type="text/javascript">
function onSelectChange(obj,toSelId){
 setSelect(obj.value,toSelId);
}
function setSelect(fromSelVal,toSelId){
 //alert(document.getElementById("province").selectedIndex);
 document.getElementById(toSelId).innerHTML="";
 jQuery.ajax({
  url: "<%=path%>/getDropdownDataServlet",
  cache: false,
  data:"parentId="+fromSelVal,
  success: function(data){
  createSelectObj(data,toSelId);
  }
 });
}
function createSelectObj(data,toSelId){
 var arr = jsonParse(data);
 if(arr != null && arr.length>0){
  var obj = document.getElementById(toSelId);
  obj.innerHTML="";
  var nullOp = document.createElement("option");
  nullOp.setAttribute("value","");
  nullOp.appendChild(document.createTextNode("请选择"));
  obj.appendChild(nullOp);
  for(var o in arr){
   var op = document.createElement("option");
   op.setAttribute("value",arr[o].id);
   //op.text=arr[o].name;//这一句在ie下不起作用,用下面这一句或者innerHTML
   op.appendChild(document.createTextNode(arr[o].name));
   obj.appendChild(op);
  }
 }
}
setSelect('1','province');
</script>

数据库交互GetDropdownDataServlet

public class GetDropdownDataServlet extends HttpServlet {
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws IOException, ServletException {
  doPost(request, response);
 }
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws IOException, ServletException {
  String parentId = request.getParameter("parentId");
  if (parentId == null || parentId == "") {
   parentId = "0";
  }
  Connection conn = null;
  String json = "";
  try {
   Class.forName("com.mysql.jdbc.Driver");
   conn = DriverManager.getConnection("jdbc:mysql://localhost/dropdown",
     "root", "root");
   Statement stat = conn.createStatement();
   ResultSet rs = stat
     .executeQuery("select region_id,region_name from region where parent_id = "
       + parentId);
   ArrayList rsList = new ArrayList();
   Map map = null;
   while (rs.next()) {
    map = new HashMap();
    map.put("id", rs.getInt(1));
    map.put("name", rs.getString(2));
    rsList.add(map);
   }
   rs = null;
   Gson gson = new Gson();
   json = gson.toJson(rsList);
   System.out.println("json=" + json);
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   if (conn != null) {
    try {
     conn.close();
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
  }
  response.setCharacterEncoding("UTF-8");
  response.getWriter().print(json);
 }
}

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
JQuery中操作Css样式的方法
Feb 12 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
Feb 28 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
Sep 19 Javascript
AngularJS基础 ng-model-options 指令简单示例
Aug 02 Javascript
Google 地图API Map()构造器详解
Aug 06 Javascript
微信小程序 弹幕功能简单实例
Feb 14 Javascript
jQuery插件开发发送短信倒计时功能代码
May 09 jQuery
VueJs监听window.resize方法示例
Jan 17 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
Jul 25 Javascript
js指定日期增加指定月份的实现方法
Dec 19 Javascript
webpack的tree shaking的实现方法
Sep 18 Javascript
Vue 技巧之控制父类的 slot
Feb 24 Javascript
jQuery移动web开发中的页面初始化与加载事件
Dec 03 #Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
Dec 03 #Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
Dec 03 #Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
Dec 03 #Javascript
详解JavaScript对象和数组
Dec 03 #Javascript
java必学必会之static关键字
Dec 03 #Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
Dec 03 #Javascript
You might like
php设置session值和cookies的学习示例
2014/03/21 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
2014/04/17 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
2016/03/21 PHP
基于php判断客户端类型
2016/10/14 PHP
深入浅析PHP的session反序列化漏洞问题
2017/06/15 PHP
PHP连接MySQL数据库并以json格式输出
2018/05/21 PHP
JavaScript 对象模型 执行模型
2010/10/15 Javascript
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
详谈javascript中DOM的基本属性
2015/02/26 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
2016/07/27 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
2016/10/27 Javascript
超简单的Vue.js环境搭建教程
2017/03/17 Javascript
vue + vuex todolist的实现示例代码
2018/03/09 Javascript
Javascript实现动态时钟效果
2018/11/17 Javascript
js面向对象方式实现拖拽效果
2021/03/03 Javascript
Python实现字符串匹配算法代码示例
2017/12/05 Python
python判断完全平方数的方法
2018/11/13 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
深入解析Python小白学习【操作列表】
2019/03/23 Python
Django 外键的使用方法详解
2019/07/19 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
Tensorflow读取并输出已保存模型的权重数值方式
2020/01/04 Python
Python StringIO如何在内存中读写str
2020/01/07 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
2020/09/29 Python
用python对oracle进行简单性能测试
2020/12/05 Python
详解移动端html5页面长按实现高亮全选文本内容的兼容解决方案
2016/12/03 HTML / CSS
北京捷通华声语音技术有限公司Java软件工程师笔试题
2012/04/10 面试题
英文版银行求职信
2013/10/09 职场文书
教师自我鉴定
2013/12/13 职场文书
六一儿童节主持词
2014/03/21 职场文书
党员干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
各国货币符号大全
2022/02/17 杂记