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 相关文章推荐
javascript间隔定时器(延时定时器)学习 间隔调用和延时调用
Jan 13 Javascript
PHP中使用微秒计算脚本执行时间例子
Nov 19 Javascript
Node.js安装配置图文教程
May 10 Javascript
JS实现的简单拖拽购物车功能示例【附源码下载】
Jan 03 Javascript
JavaScript异步加载问题总结
Feb 17 Javascript
jQuery实现表单动态添加数据并提交的方法
Jul 19 jQuery
js form表单input框限制20个字符,10个汉字代码实例
Apr 12 Javascript
利用es6 new.target来对模拟抽象类的方法
May 10 Javascript
为react组件库添加typescript类型提示的方法
Jun 15 Javascript
vue实现折线图 可按时间查询
Aug 21 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
Sep 28 Javascript
利用JavaScript模拟京东按键输入功能
Dec 01 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微信浏览器分享设置以及回调详解
2016/08/01 PHP
使用composer命令加载vendor中的第三方类库 的方法
2019/07/09 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
JQuery 文本框使用小结
2010/05/22 Javascript
jquery与prototype框架的详细对比
2013/11/21 Javascript
JS实现的生成随机数的4个函数分享
2015/02/11 Javascript
基于javascript实现图片滑动效果
2016/05/07 Javascript
window.open打开窗口被拦截的快速解决方法
2016/08/04 Javascript
Bootstrap CSS组件之大屏幕展播
2016/12/17 Javascript
jQuery模拟淘宝购物车功能
2017/02/27 Javascript
Javascript中的getter和setter初识
2017/08/17 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
JavaScript 预解析的4种实现方法解析
2019/09/03 Javascript
js中offset,client , scroll 三大元素知识点总结
2019/09/11 Javascript
Element-UI+Vue模式使用总结
2020/01/02 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
Python2.x中str与unicode相关问题的解决方法
2015/03/30 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
pyinstaller打包单个exe后无法执行错误的解决方法
2019/06/21 Python
python 读取串口数据的示例
2020/11/09 Python
python requests库的使用
2021/01/06 Python
CSS3 分类菜单效果
2019/05/27 HTML / CSS
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
印尼最大的在线购物网站:MatahariMall.com
2016/08/26 全球购物
c++工程师面试问题
2013/08/04 面试题
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
测绘工程本科生求职信
2013/10/10 职场文书
会计电算化应届生求职信
2013/11/03 职场文书
大学校园生活自我鉴定
2014/01/13 职场文书
推荐信格式范文
2014/05/09 职场文书
正规欠条模板
2015/07/03 职场文书
SpringBoot整合RabbitMQ的5种模式实战
2021/08/02 Java/Android
php png失真的原因及解决办法
2021/11/17 PHP
详解Flutter和Dart取消Future的三种方法
2022/04/07 Java/Android
nginx配置指令之server_name的具体使用
2022/08/14 Servers