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 isPrototypeOf和hasOwnProperty使用区别
Mar 04 Javascript
jQuery制作仿Mac Lion OS滚动条效果
Feb 10 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
Aug 06 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
Oct 26 Javascript
JS获取鼠标坐标位置实例分析
Jan 20 Javascript
纯js实现手风琴效果
Apr 17 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
Jul 25 Javascript
JS实现基于拖拽改变物体大小的方法
Jan 23 Javascript
vue组件中的数据传递方法
May 14 Javascript
Vue项目pdf(base64)转图片遇到的问题及解决方法
Oct 19 Javascript
JS函数进阶之继承用法实例分析
Jan 15 Javascript
vue-video-player 断点续播的实现
Feb 01 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 编程请选择正确的文本编辑软件
2006/12/21 PHP
php数组转换js数组操作及json_encode的用法详解
2013/10/26 PHP
php提交post数组参数实例分析
2015/12/17 PHP
全面解读PHP的Yii框架中的日志功能
2016/03/17 PHP
yii2利用自带UploadedFile实现上传图片的示例
2017/02/16 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
jquery 追加tr和删除tr示例代码
2013/09/12 Javascript
js计算字符串长度包含的中文是utf8格式
2013/10/15 Javascript
JavaScript中的this关键字使用方法总结
2015/03/13 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
2016/11/22 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
JavaScript事件方法(实例讲解)
2017/06/27 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
Vue如何实现响应式系统
2018/07/11 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
基于elementUI实现图片预览组件的示例代码
2019/03/31 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
详解Python中的文本处理
2015/04/11 Python
python删除列表内容
2015/08/04 Python
使用Python生成XML的方法实例
2017/03/21 Python
python socket网络编程之粘包问题详解
2018/04/28 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
2019/04/16 Python
Python中断多重循环的几种方式详解
2020/02/10 Python
viagogo波兰票务平台:演唱会、体育比赛、戏剧门票
2018/04/23 全球购物
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
丹麦优惠购物网站:PLUSSHOP
2019/03/24 全球购物
工地安全质量标语
2014/06/07 职场文书
启动仪式策划方案
2014/06/14 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
个人债务授权委托书范本
2014/10/05 职场文书
公司出纳岗位职责
2015/03/31 职场文书
监理中标通知书
2015/04/16 职场文书
会计继续教育培训心得体会
2016/01/19 职场文书
实习报告范文
2019/07/30 职场文书
MYSQL 表的全面总结
2021/11/11 MySQL