Ajax无刷新三级联动

Posted in-the-game-of-thrones

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ajax无刷新三级联动相关的知识,希望对你有一定的参考价值。

1 写一个公用页面
2 <%
3     String path = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath();
4     System.out.println(path);
5 request.setAttribute("path",path);
6 %>
  1 其他页面需要绝对路径的话,就引用公用页面
  2 <%--
  3   Created by IntelliJ IDEA.
  4   User: Administrator
  5   Date: 2019/9/3
  6   Time: 14:41
  7   To change this template use File | Settings | File Templates.
  8 --%>
  9 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 10 <%@include file="base.jsp"%>
 11 <html>
 12 <head>
 13     <title>二级联动</title>
 14     <link rel="stylesheet" href="$pageContext.request.contextPath/bootstrap/css/bootstrap.min.css" />
 15     <%--<link rel="stylesheet" href="$pageContext.request.contextPath/layer/layer/mobile/need/layer.css" />--%>
 16     <script src="$pageContext.request.contextPath/bootstrap/js/jquery.min.js"></script>
 17     <script src="$pageContext.request.contextPath/bootstrap/js/bootstrap.min.js"></script>
 18     <%--<script src="$pageContext.request.contextPath/layer/layer/mobile/layer.js"></script>--%>
 19 </head>
 20 <body>
 21 <div class="container">
 22     <div class=" panel panel-primary">
 23         <div class="panel-heading">
 24             <h1>省、市、(县/区)  三级联动</h1>
 25             <h2 id="msg" style="color: yellow;"></h2>
 26         </div>
 27         <div class="panel-body">
 28             <form class="form-inline">
 29                省份: <select class="form-control" id="provice"> </select>
 30                城市: <select class="form-control" id="city"> </select>
 31                县城: <select class="form-control" id="county"> </select>
 32             </form>
 33         </div>
 34     </div>
 35 </div>
 36 </body>
 37 <script>
 38     $(function()
 39         loadProvice();
 40     )
 41     //加载所有的省份
 42     function loadProvice() 
 43         alert("加载成功!!!");
 44         var psel_tag = "<option value=‘0‘ selected = ‘selected‘>请选择省份</option>";
 45         <%--$.get("$pageContext.request.contextPath/mycity?param=provice",function (data) --%>
 46         $.get("$path/mycity?param=provice",function (data) 
 47             $(data).each(function (i,o) 
 48                 psel_tag += "<option value=‘"+o.pid+"‘>"+o.pname+"</option>";
 49             )
 50             $("#provice").html(psel_tag);
 51         ,"json");
 52     
 53 
 54     //绑定省与城市的下拉框效果
 55     $("#provice").change(function(pid) 
 56         var pv = $("#provice").val();
 57         if (pv == null || pv == ‘‘ || pv == undefined || pv == 0) 
 58             $("#city").val("");
 59             $("#county").val("");
 60             return;
 61         
 62         $.ajax(//注意这里的大括号
 63             <%--url:"$pageContext.request.contextPath/mycity?param=pHASc",--%>
 64             url:"$path/mycity?param=pHASc",
 65             method:"GET",
 66             data:"pid":$("#provice").val(),//这是参数,
 67             dataType:"json",
 68             success:function (data) 
 69                 var tags = "";
 70                 $(data).each(function (i,o) 
 71                     tags += "<option value=‘"+o.cid+"‘>"+o.cname+"</option>";
 72                 );
 73                 $("#city").html(tags);
 74                 var val = $("#city").val();
 75                 if (val != null || val != "" || val != undefined)
 76                     countyAscitychange();
 77                 
 78             ,
 79             error:function () 
 80                 alert("绑定失败");
 81             
 82         )
 83     );
 84 
 85     function countyAscitychange()
 86         $.ajax(
 87             <%--url:"$pageContext.request.contextPath/mycity?param=cHASy",--%>
 88             url:"$path/mycity?param=cHASy",
 89             method:"GET",
 90             data:"cid":$("#city").val(),
 91             dataType:"json",
 92             success:function (data) 
 93                 var couty_tag = "";
 94                 $(data).each(function (i,o) 
 95                     couty_tag += "<option value=‘"+o.xid+"‘>"+o.xname+"</option>";
 96                 );
 97                 $("#county").html(couty_tag);
 98             ,
 99             error:function () 
100                 layer.msg("城市与县城绑定失败",icron:[6]);
101             
102         )
103     
104 
105     /**
106      * 使用ajax无刷新获取数据,
107      * 使用$.ajax( 。。。。 )方式
108      */
109     $("#city").change(function () 
110         countyAscitychange();
111     );
112 </script>
113 </html>
 1 package erlian.dao;
 2 
 3 import com.mchange.v2.c3p0.ComboPooledDataSource;
 4 import erlian.model.City;
 5 import erlian.model.County;
 6 import erlian.model.Province;
 7 import org.apache.commons.dbutils.QueryRunner;
 8 import org.apache.commons.dbutils.handlers.BeanListHandler;
 9 
10 import java.sql.SQLException;
11 import java.util.List;
12 
13 public class DemoDao 
14 
15     private ComboPooledDataSource dataSource = new ComboPooledDataSource("mysql");
16     private QueryRunner runner = new QueryRunner(dataSource);
17 
18     /**
19      * 查询所有的省份
20      * @return
21      */
22     public List<Province> getAllProvince()
23         try 
24             return runner.query("select * from t_province",new BeanListHandler<Province>(Province.class));
25          catch (SQLException e) 
26             e.printStackTrace();
27             throw new RuntimeException("sql执行出错");
28         
29 
30     
31 
32 
33 
34     /**
35      * 查询所有的城市
36      * @return
37      */
38     public List<City> getAllCity()
39         try 
40             return runner.query("select * from t_city",new BeanListHandler<City>(City.class));
41          catch (SQLException e) 
42             e.printStackTrace();
43             throw new RuntimeException("sql执行出错");
44         
45     
46 
47     /**
48      * 根据省份id,得到城市
49      * @param pid
50      * @return
51      */
52     public List<City> getAllCityByPid(int pid)
53         try 
54             return runner.query("select * from t_city where pid = ?",new BeanListHandler<City>(City.class),pid);
55          catch (SQLException e) 
56             e.printStackTrace();
57             throw new RuntimeException("sql执行出错");
58         
59     
60 
61     /**
62      * 根据城市id,得到县城名称
63      * @param cid
64      * @return
65      */
66     public List<County> getAllCountyByCid(int cid)
67         try 
68             return runner.query("select * from t_county where cid = ?",new BeanListHandler<County>(County.class),cid);
69          catch (SQLException e) 
70             e.printStackTrace();
71             throw new RuntimeException("sql执行出错");
72         
73     
74 
75     public static void main(String[] args) 
76         DemoDao demoDao = new DemoDao();
77 
78         for (Province city : demoDao.getAllProvince()) 
79             System.out.println(city);
80         
81 
82 //        demoDao.getAllCountyByCid(2).forEach(y-> System.out.println(y));
83     
84 
  1 package erlian.servlet;
  2 
  3 
  4 import com.alibaba.fastjson.JSONObject;
  5 import erlian.dao.DemoDao;
  6 import erlian.model.City;
  7 import erlian.model.County;
  8 import erlian.model.Province;
  9 
 10 import javax.servlet.ServletException;
 11 import javax.servlet.annotation.WebServlet;
 12 import javax.servlet.http.HttpServlet;
 13 import javax.servlet.http.HttpServletRequest;
 14 import javax.servlet.http.HttpServletResponse;
 15 import java.io.IOException;
 16 import java.io.PrintWriter;
 17 import java.util.List;
 18 
 19 @WebServlet("/mycity")
 20 public class MyServlet extends HttpServlet 
 21     private DemoDao d = new DemoDao();
 22 
 23     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
 24         doGet(request,response);
 25     
 26 
 27     /**
 28      * 根据参数调用对应的方法servlet
 29      * @param request
 30      * @param response
 31      * @throws ServletException
 32      * @throws IOException
 33      */
 34     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
 35 
 36         response.setContentType("text/json;charset=UTF-8");
 37         String param = request.getParameter("param");
 38         System.out.println(request.getContextPath());
 39         if (param.equals("provice"))
 40             getP(request,response);
 41         else if (param.equals("city"))
 42 //            getC(request,response);
 43          else if("pHASc".equals(param))
 44             getCByPid(request,response);
 45          else if ("cHASy".equals(param))
 46             getYByCid(request,response);
 47         
 48     
 49 
 50     /**
 51      * 根据城市id,关联所包含的县区数据
 52      * @param request
 53      * @param response
 54      */
 55     private void getYByCid(HttpServletRequest request, HttpServletResponse response) throws IOException 
 56         String cid = request.getParameter("cid");
 57         PrintWriter writer = response.getWriter();
 58         List<County> allCountyByCid = d.getAllCountyByCid(Integer.parseInt(cid));
 59         //将数据用Json格式的给字符串打包
 60         String s = JSONObject.toJSONString(allCountyByCid);
 61         writer.write(s);
 62         writer.close();
 63     
 64 
 65     /**
 66      * 根据省id查询所包含的城市
 67      * @param request
 68      * @param response
 69      * @throws IOException
 70      */
 71     private void getCByPid(HttpServletRequest request, HttpServletResponse response) throws IOException 
 72         PrintWriter writer = response.getWriter();
 73         String pid = request.getParameter("pid");
 74         System.out.println(pid);
 75         List<City> allCityByPid = d.getAllCityByPid(Integer.parseInt(pid));
 76 //        allCityByPid.forEach(s-> System.out.println(s));
 77         String s = JSONObject.toJSONString(allCityByPid);
 78         writer.write(s);
 79     
 80 
 81     /**
 82      * 查询所有的省城
 83      * @param request
 84      * @param response
 85      * @throws IOException
 86      */
 87     private void getP(HttpServletRequest request, HttpServletResponse response) throws IOException 
 88         PrintWriter writer = response.getWriter();
 89         List<Province> allProvince = d.getAllProvince();
 90         String s = JSONObject.toJSONString(allProvince);
 91         writer.write(s);
 92     
 93 
 94 //    /**
 95 //     * 查询所有的城市
 96 //     * @param request
 97 //     * @param response
 98 //     * @throws IOException
 99 //     */
100 //    private void getC(HttpServletRequest request, HttpServletResponse response) throws IOException 
101 //        PrintWriter writer = response.getWriter();
102 //        List<City> allCity = d.getAllCity();
103 //        String s = JSONObject.toJSONString(allCity);
104 //        writer.write(s);
105 //    
106 
1 <?xml version="1.0" encoding="UTF-8"?>
2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
5           http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
6          version="4.0">
7 </web-app>
  1 <?xml version="1.0" encoding="UTF-8"?>
  2 
  3 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5   <modelVersion>4.0.0</modelVersion>
  6 
  7   <groupId>cn.ajax</groupId>
  8   <artifactId>demo2</artifactId>
  9   <version>1.0-SNAPSHOT</version>
 10   <packaging>war</packaging>
 11 
 12   <name>demo2 Maven Webapp</name>
 13   <!-- FIXME change it to the project‘s website -->
 14   <url>http://www.example.com</url>
 15 
 16   <properties>
 17     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 18     <maven.compiler.source>1.8</maven.compiler.source>
 19     <maven.compiler.target>1.8</maven.compiler.target>
 20   </properties>
 21 
 22   <dependencies>
 23     <dependency>
 24       <groupId>junit</groupId>
 25       <artifactId>junit</artifactId>
 26       <version>4.12</version>
 27       <scope>test</scope>
 28     </dependency>
 29 
 30     <!--c3p0连接池相关-->
 31     <dependency>
 32       <groupId>com.mchange</groupId>
 33       <artifactId>c3p0</artifactId>
 34       <version>0.9.2.1</version>
 35     </dependency>
 36 
 37     <dependency>
 38       <groupId>commons-dbutils</groupId>
 39       <artifactId>commons-dbutils</artifactId>
 40       <version>1.4</version>
 41     </dependency>
 42 
 43     <dependency>
 44       <groupId>org.apache.commons</groupId>
 45       <artifactId>commons-pool2</artifactId>
 46       <version>2.3</version>
 47     </dependency>
 48 
 49     <dependency>
 50       <groupId>commons-beanutils</groupId>
 51       <artifactId>commons-beanutils</artifactId>
 52       <version>1.6</version>
 53     </dependency>
 54 
 55     <!--mysql驱动依赖-->
 56     <dependency>
 57       <groupId>mysql</groupId>
 58       <artifactId>mysql-connector-java</artifactId>
 59       <version>5.1.40</version>
 60     </dependency>
 61 
 62     <dependency>
 63       <groupId>javax.servlet</groupId>
 64       <artifactId>javax.servlet-api</artifactId>
 65       <version>3.1.0</version>
 66       <scope>provided</scope>
 67     </dependency>
 68 
 69     <!--fastjson工具依赖-->
 70     <dependency>
 71       <groupId>com.alibaba</groupId>
 72       <artifactId>fastjson</artifactId>
 73       <version>1.2.49</version>
 74     </dependency>
 75 
 76 
 77 
 78     <!--jstl,标准标签库-->
 79     <dependency>
 80       <groupId>javax.servlet.jsp.jstl</groupId>
 81       <artifactId>jstl-api</artifactId>
 82       <version>1.2</version>
 83       <!--排除有冲突的jar:servlet-api-2.5.jar-->
 84       <exclusions>
 85         <exclusion>
 86           <groupId>javax.servlet</groupId>
 87           <artifactId>servlet-api</artifactId>
 88         </exclusion>
 89       </exclusions>
 90     </dependency>
 91 
 92 
 93     <dependency>
 94       <groupId>taglibs</groupId>
 95       <artifactId>standard</artifactId>
 96       <version>1.1.2</version>
 97     </dependency>
 98     <!--dom4j工具依赖-->
 99     <dependency>
100       <groupId>dom4j</groupId>
101       <artifactId>dom4j</artifactId>
102       <version>1.6.1</version>
103     </dependency>
104   </dependencies>
105 
106   <build>
107     <finalName>demo2</finalName>
108     <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
109       <plugins>
110         <plugin>
111           <artifactId>maven-clean-plugin</artifactId>
112           <version>3.1.0</version>
113         </plugin>
114         <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
115         <plugin>
116           <artifactId>maven-resources-plugin</artifactId>
117           <version>3.0.2</version>
118         </plugin>
119         <plugin>
120           <artifactId>maven-compiler-plugin</artifactId>
121           <version>3.8.0</version>
122         </plugin>
123         <plugin>
124           <artifactId>maven-surefire-plugin</artifactId>
125           <version>2.22.1</version>
126         </plugin>
127         <plugin>
128           <artifactId>maven-war-plugin</artifactId>
129           <version>3.2.2</version>
130         </plugin>
131         <plugin>
132           <artifactId>maven-install-plugin</artifactId>
133           <version>2.5.2</version>
134         </plugin>
135         <plugin>
136           <artifactId>maven-deploy-plugin</artifactId>
137           <version>2.8.2</version>
138         </plugin>
139       </plugins>
140     </pluginManagement>
141   </build>
142 </project>

 

以上是关于Ajax无刷新三级联动的主要内容,如果未能解决你的问题,请参考以下文章

用jsp实现省市区三级联动下拉

ajax省市区三级联动

javaweb--json--ajax--mysql实现省市区三级联动(附三级联动数据库)

asp.net怎么做无刷新省市三级联动,用数据库做的,求大神帮忙解决,发个源码也可以,谢谢啦

2017-6-7AJAX异步刷新 省市区 三级联动

ajax三级联动