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的各种节点操作实例演示代码
Jun 27 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
Aug 25 Javascript
非常实用的12个jquery代码片段
Nov 02 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
Nov 04 Javascript
JavaScript开发者必备的10个Sublime Text插件
Feb 27 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
Aug 02 Javascript
前端编码规范(3)JavaScript 开发规范
Jan 21 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
Jul 27 Javascript
Vue中封装input组件的实例详解
Oct 17 Javascript
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
Nov 09 Javascript
JavaScript插件Tab选项卡效果
Nov 14 Javascript
vue项目设置scrollTop不起作用(总结)
Dec 21 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
joomla内置的表单验证功能使用方法
2010/06/11 PHP
php获取域名的google收录示例
2014/03/24 PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
2014/05/07 PHP
destoon安装出现Internal Server Error的解决方法
2014/06/21 PHP
php时间戳格式化显示友好的时间函数分享
2014/10/21 PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
2017/07/16 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
jQuery中offset()方法用法实例
2015/01/16 Javascript
jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍
2016/09/01 Javascript
Bootstrap3 图片(响应式图片&amp;图片形状)
2017/01/04 Javascript
JS实现购物车特效
2017/02/02 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
微信小程序实现联动选择器
2019/02/15 Javascript
RxJS的入门指引和初步应用
2019/06/15 Javascript
vue 微信扫码登录(自定义样式)
2020/01/06 Javascript
基于vuex实现购物车功能
2021/01/10 Vue.js
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
浅谈Python中函数的参数传递
2016/06/21 Python
详解Python开发中如何使用Hook技巧
2017/11/01 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
2020/11/06 Python
通过Python pyecharts输出保存图片代码实例
2020/11/25 Python
美国儿童珠宝在线零售商:Loveivy
2019/05/22 全球购物
澳洲的UGG雪地靴超级市场:Uggs.com.au
2020/04/06 全球购物
应届大专毕业生个人自荐信
2013/09/22 职场文书
小学家长会邀请函
2014/01/23 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
导游欢迎词范文
2015/01/23 职场文书
公司表扬信格式
2015/05/04 职场文书
解决golang 关于全局变量的坑
2021/05/06 Golang
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python
pytorch 实现在测试的时候启用dropout
2021/05/27 Python
Python如何导出导入所有依赖包详解
2021/06/08 Python