使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例

首先我们需要先建立好数据库,将一些数据插入进去

需要两张表:

province:省份表

city: 城市表

如图:

然后再在java中建立相关的实体类与之对应

再然后,我们就能开始做jdbc的操作了

public class ConnectionFactory {
 private static String driver;
 private static String url;
 private static String user;
 private static String password;
 static {
  Properties prop = new Properties();
  //读取文件 

  try {
   InputStream in = ConnectionFactory.class.getResourceAsStream("./jdbc.properties"); 

   prop.load(in);
   driver = prop.getProperty("jdbc.driver");
   url = prop.getProperty("jdbc.url");
   user = prop.getProperty("jdbc.user");
   password = prop.getProperty("jdbc.password");
  } catch (IOException e) {
   e.printStackTrace();
  } 

 } 

 /**
  * 获取连接对象
  * @return
  */
 public static Connection getConnection(){
  Connection conn = null; 

  try {
   Class.forName(driver);
   conn = DriverManager.getConnection(url, user, password); 

  } catch (Exception e) {
   throw new RuntimeException(e);
  } 

  return conn;
 } 

 /**
  * 关闭资源
  * @param conn
  * @param pstmt
  * @param stmt
  * @param rs
  */
 public static void close(Connection conn,PreparedStatement pstmt,Statement stmt,ResultSet rs){ 

   try {
    if (conn != null) {
     conn.close();
    } 

    if (pstmt != null) {
     pstmt.close();
    } 

    if (stmt != null) {
     stmt.close();
    } 

    if (rs != null) {
     rs.close();
    }
   } catch (SQLException e) {
    throw new RuntimeException(e);
   } 

 }

首先我们可以在页面加载的时候获取所有省份的信息,SQL语句如下

Connection conn = null;
 PreparedStatement pstmt = null;
 Province province2 = null; 

 @Override
 public ArrayList<Province> findAllPro() {
  ResultSet rs = null;
  ArrayList<Province> pros = null;
  try {
   String sql = "select id,place from province";
   conn = ConnectionFactory.getConnection();
   pstmt = conn.prepareStatement(sql);
   pros = new ArrayList<Province>(); 

   rs = pstmt.executeQuery(); 

   while(rs.next()){
    Province province = new Province();
    province.setId(rs.getInt(1));
    province.setPlace(rs.getString(2));
    pros.add(province);
   } 

  } catch (SQLException e) {
   throw new RuntimeException(e);
  } 

  return pros;
 } 

将查到的数据放到后台,建立一个SelectedServlet类,用于接收查询到的所有省份的信息

response.setContentType("application/json;charset=utf-8");
  response.setCharacterEncoding("utf-8");
  request.setCharacterEncoding("utf-8");
  //创建一个Place对象
  ArrayList<Province> pros= new Place().findAllPro();
  PrintWriter out = response.getWriter();
  //将集合直接转换为Json对象
  out.write(JSONArray.fromObject(pros).toString()); 

在这里会用到集合转换Json对象,我们需要导入以下几个包

然后我们开始写前台页面:

<body>
  省份:<select id="province">
   <option>--请选择省份--</option>
  </select> 

  城市:<select id="city">
    <option>--请选择城市--</option>
   </select>
  <br/><br/>
  <span></span>
 </body> 

然后jQuery代码如下:(由于我导入的jQuery版本比较低,所以使用的方法是getJSON,而不是getJson)

$.getJSON("SelectedServlet",function(data,textStatus){
 var provinces = data; 

 var res = "";
 for(var i =0;i<provinces.length;i++){
 <span style="white-space:pre"> </span>res += "<option>"+provinces[i].place+"</option>";
 }
  $("#province").append(res);
 }); 

这样就能在页面加载的时候获取到数据

然后我们再来做联动,首先给下拉框添加一个change事件,然后获取选中的信息,将选中的信息发送到另一个CityServlet中

//下拉框改变时触发的事件
 $("#province").change(function(){
 var seled = $("option:selected").html(); 

 $("span").html(seled);
 $.getJSON("CityServlet",{
  "province":encodeURI(encodeURI(seled))
     },function(data){
  $("#city").html("");
  var citys = data;
  var res = "";
  for(var i = 0;i<citys.length;i++){
   res += "<option>"+citys[i].place+"</option>";
  }
  $("#city").append(res);
 }); 

 }); 

服务器通过获得的信息通过sql语句查询出来,SQL代码如下:

public ArrayList<City> findAllCityByPro(String name) {
  ResultSet rs = null;
  ArrayList<City> citys = null;
  try {
   //通过名字获得所有值
   String sql = "select c.city_place from city c ,"
     + "province p where c.province_id = "
     + " (select id from province where place = '"+ name +"') "
     + " and c.province_id = p.id";
   conn = ConnectionFactory.getConnection();
   pstmt = conn.prepareStatement(sql);
   citys = new ArrayList<City>();
   System.out.println(sql);
   rs = pstmt.executeQuery(); 

   while(rs.next()){
    City city = new City();
    city.setPlace(rs.getString(1));
    citys.add(city);
   }
   System.out.println(citys); 

  } catch (SQLException e) {
   e.printStackTrace();
  } 

  return citys;
 } 

将查询到的数据发送到后台,后台接收到数据后将其转换为Json对象,并通过回调函数发送到前台,然后前台就可以通过事件直接获取到数据,而不用各种跳转页面,这就是Ajax(Asynchronous Javascript And XML),

protected void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  response.setContentType("application/json;charset=utf-8");
  response.setCharacterEncoding("utf-8");
  request.setCharacterEncoding("utf-8");
//  String proName = "浙江";
  String proName = URLDecoder.decode(URLDecoder.decode(request.getParameter("province"), "utf-8"),
    "utf-8");
  ArrayList<City> citys= new Place().findAllCityByPro(proName);
  PrintWriter out = response.getWriter();
  out.write(JSONArray.fromObject(citys).toString()); 

 } 

至于显示页面的代码也在前面写到jQuery语句中了

效果如下:

以上这篇使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Ajax结合php实现二级联动

    本文实例为大家分享了Ajax结合php实现二级联动的具体代码,使用ajax,从php中获取数据,具体内容如下 使用ajax,从php中获取数据 <!DOCTYPE html> <html> <head> <title>Ajax案例一</title> <meta charset="utf-8" /> </head> <body> <!-- 二级联动 --> <select i

  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计.分类表叫cate. 我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id. 数据库有内容后,就可以开始写代码,进行二级联动的实现. 先在后台php获取所有pid为0的数据,保存到$cate中,然后在第一层的<select>中用foreach循环输出. Html代码: 复制代码 代码如下: <select name="type" s

  • PHP+ajax实现二级联动菜单功能示例

    本文实例讲述了PHP+ajax实现二级联动菜单功能.分享给大家供大家参考,具体如下: 如何实现二级联动 工作原理 二级联动在开发中是比较常见的一个技术点,它主要运用了JS的局部刷新技术ajax,不同于一般页面全局刷新,它只会刷新我们需要改变值的地方,我们首先看下它的工作流程. 第一步:我们会向后台发送一个请求 第二步:后台接受请求后,会返回给我们一个值 第三步:将值用JS呈现在页面中 HTML代码 <html> <head> <title>www.jb51.net 二级

  • 落伍首发 php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码

    绝对原创   测试地址: http://www.mlmm.cn/mypage/?name=ceshi 测试页代码: 复制代码 代码如下: <html>  <head>  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  <title>php+ajax动态生成下拉菜单</title>  <script lang

  • Ajax+php实现商品分类三级联动

    当页面加载时,利用ajax异步向后台请求数据,加载一级商品类别,当选择一级商品时加载二级商品,选择二级商品加载三级商品. 实现: 1.当拿到数据后加载pid为0的商品,并动态创建option将商品追加到一级菜单中,并设置value值 2.当选择一级商品时加载pid=当前id的商品,并创建option将商品追加到二级菜单中,并设置value值 3.当选择二级商品时加载pid=当前id的商品,并创建option将商品追加到三级菜单中,并设置value值 页面效果:  $(function(){ //

  • PHP+Mysql+Ajax+JS实现省市区三级联动

    基本思想就是:在JS动态创建select控件的option,通过Ajax获取在PHP从SQL数据库获取的省市区信息,代码有点长,但很多都是类似的,例如JS中省.市.区获取方法类似,PHP中通过参数不同执行不同的select语句. index.html代码: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xh

  • jQuery ajax+PHP实现的级联下拉列表框功能示例

    本文实例讲述了jQuery ajax+PHP实现的级联下拉列表框功能.分享给大家供大家参考,具体如下: 一 代码 fun.js: // JavaScript Document $(document).ready( function(){ $.get("returnpc.php?flag=p", null, function(data){ //向服务器发送GET请求,获取省份的值,并将结果追加到省份下拉列表中 $("#p").append(data); }); $(&

  • 几种二级联动案例(jQuery\Array\Ajax php)

    在开发过程中,遇到过非常多的二级联动,下面是我总结出来的几种二级联动案例 二级联动(1)  第一种案例是一种比较简单的二级联动,利用jquery的显示隐藏来实现,对于数据较少的二级联动来说可以采纳 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>二级联动</title> /*引入jquery文件*/ <script type=&quo

  • 使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例

    使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能 要求:写一个省市区(或者年月日)的三级联动,实现地区或时间的下拉选择. 实现技术:php ajax 实现:省级下拉变化时市下拉区下拉跟着变化,市级下拉变化时区下拉跟着变化. 使用chinastates表查询 Ajax加载数据 1.这是chinastates表 2.做一个简单php:Ajax_eg.php <!DOCTYPE html> <html> <head> <meta charset=&q

  • 使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例

    首先我们需要先建立好数据库,将一些数据插入进去 需要两张表: province:省份表 city: 城市表 如图: 然后再在java中建立相关的实体类与之对应 再然后,我们就能开始做jdbc的操作了 public class ConnectionFactory { private static String driver; private static String url; private static String user; private static String password;

  • jsp从数据库获取数据填充下拉框实现二级联动菜单的方法

    本文实例讲述了jsp从数据库获取数据填充下拉框实现二级联动菜单的方法.分享给大家供大家参考,具体如下: 项目告一段落,现在将遇到的比较实用的东西记录下来,写了多遍了,谨记于此,以备查看! 1.首先在数据库中获取第一个下拉框的数据: <s:select listKey="tsFrom" id="t_tsfrom" cssClass="required" listValue="tsFrom" cssStyle="w

  • jQuery实现监听下拉框选中内容发生改变操作示例

    本文实例讲述了jQuery实现监听下拉框选中内容发生改变操作.分享给大家供大家参考,具体如下: jQuery代码部分: <script> $(document).ready(function(){ var defaultId = "${defaultSelected}"; var defaultTime = "${timeName}"; $("select option").each(function(){ if($(this).va

  • 基于jQuery Ajax实现下拉框无刷新联动

    本文实例为大家分享了jQuery Ajax实现下拉框无刷新联动的具体代码,供大家参考,具体内容如下 HTML代码: @{ Layout = null; } @using DAL; @using System.Data; @{ AreaDal areaDal = new AreaDal(); string areaId = ViewBag.areaId; DataRow drArea = areaDal.GetArea(areaId); string countyId = drArea == nu

  • jquery.multiselect多选下拉框实现代码

    本文实例为大家分享了jquery.multiselect多选下拉框的实现方法,供大家参考,具体内容如下 第一步:链接下列文件,如果没有,到此网页下载 https://github.com/ehynds/jquery-ui-multiselect-widget,此插件基于jquery ,所以jquery的基本文件都需要引用 <link rel="stylesheet" type="text/css" href="~/Scripts/jquerymult

  • jQuery实现点击下拉框中的值累加到文本框中的方法示例

    本文实例讲述了jQuery实现点击下拉框中的值累加到文本框中的方法.分享给大家供大家参考,具体如下: 先来看看运行效果: 具体代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale

  • jQuery操作选中select下拉框的值代码实例

    这篇文章主要介绍了jQuery操作选中select下拉框的值代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 js和jQuery联合操作dom真的很好用,如果不是专业前端人员的话,我觉得吧前端语言只要熟练掌握js和jQuery就可以了. 获取select下拉框的几种情况如下: 1.获取第一个option的值 $('#test option:first').val(); 2.最后一个option的值 $('#test option:last

  • jquery实现户籍地选择下拉框

    利用jquery实现户籍地选择下拉框的具体代码,供大家参考,具体内容如下 data.js var data = [{ provname: '浙江省', provId: 1, citys: [{ cityname: "杭州市", cityId: 101, areas: [{ areaname: "杭州一区", areaId: 1011 }, { areaname: "杭州二区", areaId: 1012 } ] }, { cityname: &q

  • select下拉菜单实现二级联动效果

    需求:建立年级.班级两个数据表,获取年级表信息,根据年级,获取相应的班级 效果图: 不完美的地方就是在不选择年级的时候,是不能选择任何班级的. 代码部分 首先是建立两个表的实体 需要注意的就是写注解了.代码就不贴了. DAO层代码 年级DAO 年级的DAO层没什么代码,就是继承那三个类,具体用到哪个我也不清楚,就直接都继承了. public interface GraceDAO extends PagingAndSortingRepository<Grace, String>,JpaSpeci

  • element-plus 下拉框实现全选的示例代码

    目录 前言 下拉框的简单使用 全选互斥 下拉框多选 全选互斥的实现 多个下拉框互斥 一般全选的实现 前言 实习确实能学到不少东西,但是学到的东西果然还是需要沉淀下来,不然后面立马又忘记了. 下拉框的简单使用 使用方法还是比较简单的 <el-select v-model="user.name" placeholder="请选择"> <el-option v-for="item in nameList" :key="ite

随机推荐