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代码通俗易懂(自写)
Jun 19 Javascript
jQuery随便控制任意div隐藏的方法
Jun 28 Javascript
jQuery判断checkbox是否选中的小例子
Dec 02 Javascript
JS文件上传神器bootstrap fileinput详解
Jan 28 Javascript
Vue-Router实现页面正在加载特效方法示例
Feb 12 Javascript
js实现3D图片展示效果
Mar 09 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
Aug 09 Javascript
Vue的H5页面唤起支付宝支付功能
Apr 18 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
May 27 jQuery
jQuery是用来干什么的 jquery其实就是一个js框架
Feb 04 jQuery
AJAX检测用户名是否存在的方法
Mar 24 Javascript
Vue的生命周期一起来看看
Feb 24 Vue.js
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.ini 中文版
2006/10/28 PHP
php 不同编码下的字符串长度区分
2009/09/26 PHP
献给php初学者(入门学习经验谈)
2010/10/12 PHP
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
2013/04/13 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
PHP记录和读取JSON格式日志文件
2016/07/07 PHP
基于php实现的验证码小程序
2016/12/13 PHP
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
jquery实现文本框鼠标右击无效以及不能输入的代码
2010/11/05 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
2014/06/07 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
2015/10/14 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
jQuery上传多张图片带进度条样式(DEMO)
2017/03/02 Javascript
H5实现中奖记录逐行滚动切换效果
2017/03/13 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
深入理解Angularjs中$http.post与$.post
2017/05/19 Javascript
webpack分离css单独打包的方法
2018/06/12 Javascript
利用JavaScript模拟京东按键输入功能
2020/12/01 Javascript
[49:17]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第三场 1月26日
2021/03/11 DOTA
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
Python中关于字符串对象的一些基础知识
2015/04/08 Python
谈谈Python进行验证码识别的一些想法
2016/01/25 Python
python3中int(整型)的使用教程
2017/03/23 Python
数据清洗--DataFrame中的空值处理方法
2018/07/03 Python
Python高级特性切片(Slice)操作详解
2018/09/27 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
Python tkinter常用操作代码实例
2020/01/03 Python
通过python检测字符串的字母
2020/02/18 Python
美国南部最大的家族百货公司:Belk
2017/01/30 全球购物
路由表示做什么用的?在linux环境中怎么来配置一条默认路由?
2013/06/07 面试题
高中军训广播稿
2014/01/14 职场文书
社区包粽子活动方案
2014/01/21 职场文书
党政领导班子群众路线对照检查材料
2014/10/26 职场文书
Python实战之实现康威生命游戏
2021/04/26 Python