Ajax實現(xiàn)省市區(qū)三級聯(lián)動
更新時間:2021年07月12日 09:57:11 作者:wbcra
這篇文章主要為大家詳細介紹了jQuery ajax實現(xiàn)省市縣三級聯(lián)動的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能幫助到你
需要的jar包:


數(shù)據(jù)庫代碼:
create database school character set utf8; use school; CREATE table provice ( pid INT PRIMARY KEY auto_increment, pname varchar(20) ); INSERT into provice VALUES (null,"河南省"); INSERT into provice VALUES (null,"山東省"); INSERT into provice VALUES (null,"河北省"); CREATE table city ( cid INT PRIMARY KEY auto_increment, cname varchar(20), pid int ); -- 河南省 INSERT into city VALUES (null,"鄭州市",1); INSERT into city VALUES (null,"開封市",1); INSERT into city VALUES (null,"洛陽市",1); -- 山東 INSERT into city VALUES (null,"濟南市",2); INSERT into city VALUES (null,"青島市",2); INSERT into city VALUES (null,"淄博市",2); -- 河北 INSERT into city VALUES (null,"石家莊市",3); INSERT into city VALUES (null,"唐山市",3); INSERT into city VALUES (null,"秦皇島市",3); CREATE table street ( sid INT PRIMARY KEY auto_increment, sname varchar(20), cid int ); -- 鄭州市 INSERT into street VALUES (null,"中原區(qū)",1); INSERT into street VALUES (null,"二七區(qū)",1); INSERT into street VALUES (null,"管城回族區(qū)",1); -- 開封市 INSERT into street VALUES (null,"龍亭區(qū)",2); INSERT into street VALUES (null,"順河回族區(qū)",2); INSERT into street VALUES (null,"鼓樓區(qū)",2); -- 洛陽市 INSERT into street VALUES (null,"汝陽",3); INSERT into street VALUES (null,"宜陽",3); INSERT into street VALUES (null,"洛寧",3); -- 濟南市 INSERT into street VALUES (null,"商河縣",4); INSERT into street VALUES (null,"濟陽縣",4); INSERT into street VALUES (null,"平陰縣",4); -- 青島市 INSERT into street VALUES (null,"七區(qū)五市",5); INSERT into street VALUES (null,"市南區(qū)",5); INSERT into street VALUES (null,"市北區(qū)",5); -- 淄博市 INSERT into street VALUES (null,"博山",6); INSERT into street VALUES (null,"周村",6); INSERT into street VALUES (null,"臨淄",6); -- 石家莊市 INSERT into street VALUES (null,"正定縣",7); INSERT into street VALUES (null,"行唐縣",7); INSERT into street VALUES (null,"靈壽縣",7); -- 唐山市 INSERT into street VALUES (null,"樂亭縣",8); INSERT into street VALUES (null,"遷西縣",8); INSERT into street VALUES (null,"玉田縣",8); -- 秦皇島市 INSERT into street VALUES (null,"青龍滿族自治縣",9); INSERT into street VALUES (null,"昌黎縣",9); INSERT into street VALUES (null,"盧龍縣",9);
省:
package cn.hp.dao;
import cn.hp.model.Provice;
import java.util.List;
public interface ProviceInfoDao {
public List<Provice> findAll();
}
package cn.hp.impl;
import cn.hp.dao.ProviceInfoDao;
import cn.hp.model.Provice;
import cn.hp.util.DBHelper;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class ProviceInfoDaoImpl implements ProviceInfoDao {
@Override
public List<Provice> findAll() {
Connection conn = DBHelper.getConn();
List<Provice> list = new ArrayList<Provice>();
String sql = "select * from provice";
try {
PreparedStatement ps=conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while (rs.next()){
Provice p = new Provice();
p.setPid(rs.getInt(1));
p.setPname(rs.getString(2));
list.add(p);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
}
package cn.hp.model;
public class Provice {
private int pid;
private String pname;
public Provice() {
}
public Provice(int pid, String pname) {
this.pid = pid;
this.pname = pname;
}
@Override
public String toString() {
return "Provice{" +
"pid=" + pid +
", pname='" + pname + '\'' +
'}';
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
}
package cn.hp.servlet;
import cn.hp.dao.ProviceInfoDao;
import cn.hp.impl.ProviceInfoDaoImpl;
import cn.hp.model.Provice;
import com.alibaba.fastjson.JSONObject;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@WebServlet("/findprovice")
public class FindProviceServlet extends HttpServlet {
public FindProviceServlet() {
super();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// super.doGet(req, resp);
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
ProviceInfoDao pid = new ProviceInfoDaoImpl();
List<Provice> plist=pid.findAll();
//把這個省份的集合轉(zhuǎn)換成json格式的數(shù)據(jù)發(fā)送到前端頁面
resp.getWriter().write(JSONObject.toJSONString(plist));
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
市:
package cn.hp.dao;
import cn.hp.model.City;
import java.util.List;
public interface CityInfoDao {
public List<City> findAllCity(int pid);
}
package cn.hp.impl;
import cn.hp.dao.CityInfoDao;
import cn.hp.model.City;
import cn.hp.model.Provice;
import cn.hp.util.DBHelper;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class CityInfoDaoImpl implements CityInfoDao {
@Override
public List<City> findAllCity(int pid) {
Connection conn = DBHelper.getConn();
List<City> list = new ArrayList<City>();
String sql = "select * from city where pid=?";
try {
PreparedStatement ps=conn.prepareStatement(sql);
ps.setInt(1,pid);
ResultSet rs = ps.executeQuery();
while (rs.next()){
City c=new City();
c.setCid(rs.getInt(1));
c.setCname(rs.getString(2));
c.setPid(rs.getInt(3));
list.add(c);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
}
package cn.hp.model;
public class City {
private int cid;
private String cname;
private int pid;
public City() {
}
public City(int cid, String cname, int pid) {
this.cid = cid;
this.cname = cname;
this.pid = pid;
}
@Override
public String toString() {
return "City{" +
"cid=" + cid +
", cname='" + cname + '\'' +
", pid=" + pid +
'}';
}
public int getCid() {
return cid;
}
public void setCid(int cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
}
package cn.hp.servlet;
import cn.hp.dao.CityInfoDao;
import cn.hp.impl.CityInfoDaoImpl;
import cn.hp.model.City;
import com.alibaba.fastjson.JSONObject;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@WebServlet("/findcitypid")
public class FindCityPidServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
String id = req.getParameter("id");
CityInfoDao cid = new CityInfoDaoImpl();
List<City> list = cid.findAllCity(Integer.parseInt(id));
//把城市的集合轉(zhuǎn)換成json格式的字符串發(fā)送到前端頁面
resp.getWriter().write(JSONObject.toJSONString(list));
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
區(qū):
package cn.hp.dao;
import cn.hp.model.Street;
import java.util.List;
public interface StreetInfoDao {
public List<Street> findAllStreet(int cid);
}
package cn.hp.impl;
import cn.hp.dao.StreetInfoDao;
import cn.hp.model.Provice;
import cn.hp.model.Street;
import cn.hp.util.DBHelper;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class StreetInfoDaoImpl implements StreetInfoDao {
@Override
public List<Street> findAllStreet(int cid) {
Connection conn = DBHelper.getConn();
List<Street> list = new ArrayList<Street>();
String sql = "select * from Street where cid=?";
try {
PreparedStatement ps=conn.prepareStatement(sql);
ps.setInt(1,cid);
ResultSet rs = ps.executeQuery();
while (rs.next()){
Street s = new Street();
s.setDid(rs.getInt(1));
s.setDname(rs.getString(2));
s.setCid(rs.getInt(3));
list.add(s);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
}
package cn.hp.model;
public class Street {
private int did;
private String dname;
private int cid;
public Street() {
}
public Street(int did, String dname, int cid) {
this.did = did;
this.dname = dname;
this.cid = cid;
}
@Override
public String toString() {
return "Street{" +
"did=" + did +
", dname='" + dname + '\'' +
", cid=" + cid +
'}';
}
public int getDid() {
return did;
}
public void setDid(int did) {
this.did = did;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public int getCid() {
return cid;
}
public void setCid(int cid) {
this.cid = cid;
}
}
package cn.hp.servlet;
import cn.hp.dao.CityInfoDao;
import cn.hp.dao.ProviceInfoDao;
import cn.hp.dao.StreetInfoDao;
import cn.hp.impl.CityInfoDaoImpl;
import cn.hp.impl.ProviceInfoDaoImpl;
import cn.hp.impl.StreetInfoDaoImpl;
import cn.hp.model.City;
import cn.hp.model.Provice;
import cn.hp.model.Street;
import com.alibaba.fastjson.JSONObject;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@WebServlet("/findstreetdid")
public class FindStreetServlet extends HttpServlet {
public FindStreetServlet() {
super();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
String id = req.getParameter("id");
StreetInfoDao did = new StreetInfoDaoImpl();
List<Street> list=did.findAllStreet(Integer.parseInt(id));
//把這個省份的集合轉(zhuǎn)換成json格式的數(shù)據(jù)發(fā)送到前端頁面
resp.getWriter().write(JSONObject.toJSONString(list));
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
頁面展示代碼:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<script src="js/jquery-1.8.3.js"></script>
<html>
<head>
<title>Title</title>
</head>
<body>
<script>
$(function () {
$.ajax({
type:"get",
url:"findprovice",
dataType:"json",
success:function (data) {//data的值就是從后端發(fā)送過來的json格式的字符串
//拿到當前省份的元素對象
var obj = $("#provice");
for (var i =0;i<data.length;i++){
var ob="<option value='"+data[i].pid+"'>"+data[i].pname+"</option>";
obj.append(ob);
}
}
})
})
</script>
<select name="provice" id="provice">
<option value="0">請選擇</option>
</select>省
<select name="city" id="city">
<option value="0">請選擇</option>
</select>市
<select name="street" id="street">
<option value="0">請選擇</option>
</select>區(qū)
<script>
$("#provice").change(function () {
$("#city option").remove();
$.ajax({
type: "get",
url:"findcitypid?id="+$("#provice").val(),
dataType: "json",
success:function (data) {
var obj = $("#city");
for (var i =0;i<data.length;i++){
var ob="<option value='"+data[i].cid+"'>"+data[i].cname+"</option>";
obj.append(ob);
}
}
})
})
</script>
<script>
$("#provice").change(function () {
$("#street option").remove();
$.ajax({
type: "get",
url:"findstreetdid?id="+$("#provice").val(),
dataType: "json",
success:function (data) {
var obj = $("#street");
for (var i =0;i<data.length;i++){
var ob="<option value='"+data[i].did+"'>"+data[i].dname+"</option>";
obj.append(ob);
}
}
})
})
</script>
</body>
</html>
DBHelper類:
package cn.hp.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBHelper {
private static String Driver = "com.mysql.jdbc.Driver";
private static String Url = "jdbc:mysql://localhost:3306/school?characterEncoding=utf8";
private static String user = "root";
private static String pwd = "root";
public static Connection conn;
// 創(chuàng)建數(shù)據(jù)庫連接
public static Connection getConn() {
try {
Class.forName(Driver);
conn = DriverManager.getConnection(Url, user, pwd);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
// 關(guān)閉數(shù)據(jù)庫連接
public static void getClose() {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 測試數(shù)據(jù)庫連接
public static void main(String[] args) {
System.out.println(getConn());
if (getConn()!=null) {
System.out.println("鏈接成功");
}
}
}
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望你能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Mybatis的Mapper代理對象生成及調(diào)用過程示例詳解
這篇文章主要為大家介紹了Mybatis的Mapper代理對象生成及調(diào)用過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09
MyBatis JdbcType 與Oracle、MySql數(shù)據(jù)類型對應關(guān)系說明
這篇文章主要介紹了MyBatis JdbcType 與Oracle、MySql數(shù)據(jù)類型對應關(guān)系說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Spring?Cloud?中使用?Sentinel?實現(xiàn)服務限流的兩種方式
這篇文章主要介紹了Spring?Cloud?中使用?Sentinel?實現(xiàn)服務限流的方式,通過示例代碼主要介紹了Sentinel的兩種實現(xiàn)限流的方式,需要的朋友可以參考下2024-03-03
SpringBoot獲取Request和Response方法代碼解析
這篇文章主要介紹了SpringBoot獲取Request和Response方法代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-11-11
Java多線程實現(xiàn)TCP網(wǎng)絡Socket編程(C/S通信)
這篇文章主要介紹了Java多線程實現(xiàn)TCP網(wǎng)絡Socket編程(C/S通信),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10

