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 弹出登录窗口实现代码
Dec 24 Javascript
jQuery实战之品牌展示列表效果
Apr 10 Javascript
js的onload事件及初始化按钮事件示例代码
Sep 25 Javascript
JavaScript实现的双向跨域插件分享
Jan 31 Javascript
JS实现一个按钮的方法
Feb 05 Javascript
详解JS中Array对象扩展与String对象扩展
Jan 07 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
Aug 29 Javascript
JavaScript数据类型学习笔记分享
Sep 01 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
Dec 15 Javascript
vue工程全局设置ajax的等待动效的方法
Feb 22 Javascript
DatePickerDialog 自定义样式及使用全解
Jul 09 Javascript
openlayers实现地图弹窗
Sep 25 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
2007/03/15 PHP
php多文件上传实现代码
2014/02/20 PHP
PHP中单引号与双引号的区别分析
2014/08/19 PHP
让你的网站可编辑的实现js代码
2009/10/19 Javascript
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
图片在浏览器中底部对齐 解决方法之一
2011/11/30 Javascript
JS滚轮事件onmousewheel使用介绍
2013/11/01 Javascript
JavaScript四种调用模式和this示例介绍
2014/01/02 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
jQuery获得字体颜色16位码的方法
2016/02/20 Javascript
js实现带简单弹性运动的导航条
2017/02/22 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
vue+axios实现登录拦截的实例代码
2017/05/22 Javascript
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
2018/09/19 Javascript
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
python thread 并发且顺序运行示例
2009/04/09 Python
Python语言描述连续子数组的最大和
2018/01/04 Python
spark: RDD与DataFrame之间的相互转换方法
2018/06/07 Python
python自动化测试之异常及日志操作实例分析
2019/11/09 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
Python求凸包及多边形面积教程
2020/04/12 Python
8种常用的Python工具
2020/08/05 Python
韩国三星旗下的一家超市连锁店:Home Plus
2016/07/30 全球购物
英国在线自行车店:Merlin Cycles
2018/08/20 全球购物
客户服务经理岗位职责
2014/01/29 职场文书
干部年终考核评语
2015/01/04 职场文书
全国爱眼日活动总结
2015/02/27 职场文书
暖春观后感
2015/06/08 职场文书
中学政教处工作总结
2015/08/13 职场文书
2016年小学“感恩教师”主题队日活动总结
2016/04/01 职场文书
vue使用echarts实现折线图
2022/03/21 Vue.js
python运行脚本文件的三种方法实例
2022/06/25 Python