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 相关文章推荐
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
Jan 02 Javascript
js和as的稳定传值问题解决
Jul 14 Javascript
JQuery实现动态表格点击按钮表格增加一行
Aug 24 Javascript
jquery中EasyUI实现同步树
Mar 01 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
Apr 06 Javascript
jQuery插件bxSlider实现响应式焦点图
Apr 12 Javascript
Highcharts学习之数据列
Aug 03 Javascript
微信小程序--组件(swiper)详细介绍
Jun 13 Javascript
vue elementUI 表单校验功能之数组多层嵌套
Jun 04 Javascript
JS中的算法与数据结构之字典(Dictionary)实例详解
Aug 20 Javascript
javascript实现视频弹幕效果(两个版本)
Nov 28 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
Feb 08 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性能优化分析工具XDebug 大型网站调试工具
2011/05/22 PHP
PHP判断远程图片是否存在的几种方法
2014/05/04 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
爆炸式的JS圆形浮动菜单特效代码
2010/03/03 Javascript
jQuery布局插件UI Layout简介及使用方法
2013/04/03 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
2015/08/12 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
vue.js 表格分页ajax 异步加载数据
2016/10/18 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
jQuery鼠标移动图片上实现放大效果
2017/06/25 jQuery
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
react-router browserHistory刷新页面404问题解决方法
2017/12/29 Javascript
关于vue-router的那些事儿
2018/05/23 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
2018/08/30 Javascript
vue中各种通信传值方式总结
2019/02/14 Javascript
详解vue-cli中使用rem,vue自适应
2019/05/06 Javascript
Node.js 实现远程桌面监控的方法步骤
2019/07/02 Javascript
python开发之list操作实例分析
2016/02/22 Python
Python基础语言学习笔记总结(精华)
2017/11/14 Python
Python列表推导式与生成器表达式用法示例
2018/02/08 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
Python实现Linux监控的方法
2019/05/16 Python
pip指定python位置安装软件包的方法
2019/07/12 Python
pytorch打印网络结构的实例
2019/08/19 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
深入了解python列表(LIST)
2020/06/08 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
国窖1573广告词
2014/03/21 职场文书
石油工程专业毕业生求职信
2014/04/13 职场文书
催款律师函范文
2015/05/27 职场文书
高中运动会广播稿
2015/08/19 职场文书
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
2021/06/18 MySQL
React 并发功能体验(前端的并发模式)
2021/07/01 Javascript
基于Redis结合SpringBoot的秒杀案例详解
2021/10/05 Redis
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript