目录

1.什么是ajax?

2.ajax有什么优点:

3.实现省市联动需要准备什么数据?

1.提前准备数据库数据

2.引入jquery库、fastjson包

3.前端代码:

后端代码:

结果展示:


1.什么是ajax?

AJAX可以在浏览器中发送异步请求,请求A和B是异步的,谁也不需要等谁,类似于多线程并发 。

2.ajax有什么优点:

因为传统的请求访问页面会进行跳转,将原来页面给清除,跳转到一个新的页面。这样用户体验极差,ajax则可以局部刷新,不影响其他请求。

3.实现省市联动需要准备什么数据?

1.提前准备数据库数据

解释说明:数据库主要有code,name,pcode三个字段,其中code为根节点,pcode指向父节点(code),若pcode的值为null则说明对应的name为根值(也就是省份),若pcode不为空则对应的name为省下面的市或者市下面的区/县。

2.引入jquery库、fastjson包

ajax被封装在jQuery库里,所以完成功能需要引入对应的库,这里直接附上官网:jQuery

fastjson官网包: Maven Central Repository Search

3.前端代码:

核心代码:

//刷新省份信息$.ajax({type:"get",url:"/ajax/listArea",data:"t=" + new Date().getTime(),async:true,success : function(jsonArr){//将接收的jsonArr字符串转化为json格式数据//jsonArr:[{"code":"001","name":"河南省"},{"code":"002","name":"河北省"},{"code":"007","name":"江苏省"}]var jss=eval(jsonArr)var html="<option value=''>--请选择省份--</option>";for(var i =0;i<jss.length;i++){var area =jss[i]//console.log(jsonArr[i])html +="<option value='"+area.code+"'>"+area.name+"</option>"}$("#province").html(html)}})
 //更新市信息  这里要注意往后端传输pcode数据
$("#province").change(function (){$.ajax({type:"get",url:"/ajax/listArea",data:"t=" + new Date().getTime()+ "&pcode="+this.value,//传送数据async:true,success : function(jsonArr){//将接收的jsonArr字符串转化为json格式数据//jsonArr:[{"code":"001","name":"河南省"},{"code":"002","name":"河北省"},{"code":"007","name":"江苏省"}]var jss=eval(jsonArr)var html="<option value=''>--请选择市--</option>";for(var i =0;i<jss.length;i++){var area =jss[i]//console.log(jsonArr[i])html +="<option value='"+area.code+"'>"+area.name+"</option>"}$("#city").html(html)}})})

全部代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>省市联动</title>
</head>
<body>
<script type="text/javascript" src="js/jquery-3.6.0.min.js"></script>//引入jQuery库
<script type="text/javascript">$(function (){//发送ajax请求 页面已经加载刷新省信息$.ajax({type:"get",url:"/ajax/listArea",data:"t=" + new Date().getTime(),async:true,success : function(jsonArr){//将接收的jsonArr字符串转化为json格式数据//jsonArr:[{"code":"001","name":"河南省"},{"code":"002","name":"河北省"},{"code":"007","name":"江苏省"}]var jss=eval(jsonArr)var html="<option value=''>--请选择省份--</option>";for(var i =0;i<jss.length;i++){var area =jss[i]//console.log(jsonArr[i])html +="<option value='"+area.code+"'>"+area.name+"</option>"}$("#province").html(html)}})//ajax请求,change事件  当点击省份的时候刷新对应市信息$("#province").change(function (){$.ajax({type:"get",url:"/ajax/listArea",data:"t=" + new Date().getTime()+ "&pcode="+this.value,async:true,success : function(jsonArr){//将接收的jsonArr字符串转化为json格式数据//jsonArr:[{"code":"001","name":"河南省"},{"code":"002","name":"河北省"},{"code":"007","name":"江苏省"}]var jss=eval(jsonArr)var html="<option value=''>--请选择市--</option>";for(var i =0;i<jss.length;i++){var area =jss[i]//console.log(jsonArr[i])html +="<option value='"+area.code+"'>"+area.name+"</option>"}$("#city").html(html)}})})//ajax请求,change事件  当点击省份的时候刷新对应市信息$("#city").change(function (){$.ajax({type:"get",url:"/ajax/listArea",data:"t=" + new Date().getTime()+ "&pcode="+this.value,async:true,success : function(jsonArr){//将接收的jsonArr字符串转化为json格式数据//jsonArr:[{"code":"001","name":"河南省"},{"code":"002","name":"河北省"},{"code":"007","name":"江苏省"}]var jss=eval(jsonArr)var html="<option value=''>--请选择区/县--</option>";for(var i =0;i<jss.length;i++){var area =jss[i]//console.log(jsonArr[i])html +="<option value='"+area.code+"'>"+area.name+"</option>"}$("#area").html(html)}})})})</script>
<select id="province"></select>
<select id="city"></select>
<select id="area"></select>
</body>
</html>

后端代码:

package servlet;import com.alibaba.fastjson.JSON;
import pojb.Area;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.sql.*;
import java.util.ArrayList;
import java.util.List;@WebServlet("/listArea")
public class AreaListServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取pcode数据String pcode=request.getParameter("pcode");//连接数据库验证用户是否存在Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;List<Area> areaList=new ArrayList<>();try {//1.注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连接conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC", "root", "123456");//3.获取预编译对象String sql="";if(pcode==null){//如果pcode为null则查询省份信息sql="select code,name from t_area where pcode is null";ps=conn.prepareStatement(sql);}else {//查询市或者区信息sql="select code,name from t_area where pcode = ?";ps=conn.prepareStatement(sql);ps.setString(1,pcode);}//4.执行SQL语句rs = ps.executeQuery();//5/处理结果集while(rs.next()){String code=rs.getString("code");String name=rs.getString("name");Area area=new Area(code,name);areaList.add(area);}} catch (Exception e) {e.printStackTrace();} finally {if (rs != null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if (ps != null) {try {ps.close();} catch (SQLException e) {e.printStackTrace();}}if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}response.setContentType("text/html;charset=UTF-8");String json= JSON.toJSONString(areaList);//这里将查询到的信息转化为json字符串response.getWriter().print(json);//将json字符串响应到前端浏览器}
}

结果展示:

前端(HTML)——Ajax实现省、市、县联动相关推荐

  1. 省 市 县 三级联动

    大纲  一.导入省市县数据表(t_region)  二.引入jar包 三.导入所需util类(整体框架) 四.编写代码 1.配置数据库相关信息(数据库名.用户名.密码)    config.propr ...

  2. iOS增强版的UIDatePicker,省 市 县三级联动地址选择器(ActionSheetCustomPicker)

    一般的项目中都会有一个选择地址的需求,系统的UIDatePicker肯定是不够的,找了个比较好用的库 ActionSheetCustomPicker github地址:ActionSheetCusto ...

  3. 【web前端性能优化】13.城市三级联动

    最近做项目遇到一个城市三级联动的前端问题,感觉一个城市三级联动如果引入一个jquery库,有点太重了,于是就在网上找到了原始的js写法,感觉还挺好用的就记录一下,如下图所示: pay.html < ...

  4. jQuery实现后台异步加载数据的省、市二级联动

    实现省.市的二级联动,网上的案例大都是死数据,不好和后台交互,于是自己动手写了一个,前台jsp+jquery,后台是spring mvc的controller,用异步来加载数据.废话不多说,上代码!( ...

  5. Ajax实现无刷新三联动下拉框

    1.html代码 <HTML>     <HEAD>         <title>Ajax实现无刷新三联动下拉框</title>         &l ...

  6. mysql省市县三级互动_mysql+ajax的省市县三级联动

    1.[代码][PHP]代码 在发一次包括数据库在内的代码以示感谢!!! php页面: //这里两句话很重要,第一讲话告诉浏览器返回的数据是xml格式 header("Content-Type ...

  7. web前端必学功法之一:省市联动

    web前端必学功法之一:省市联动 案例:js实现下面功能 **<!-- 省市联动思路分析:1.准备元素:定义省份与城市的下拉框2.绑定事件:绑定省份下拉框的change事件3.准备数据:准备数组 ...

  8. ajax 取值 返回map_springboot|前端发ajax请求到后台Controller及常见的坑

    前端发ajax请求 这块是web的基础,发web请求大概需要以下几步1.引用web相关的依赖2.前端页面引入jquery.js3.编写ajax请求4.编写对应的Controller 引入web相关的依 ...

  9. 国家统计局2020年6月30日最新省/市/县三级json数据(不包含港澳台)

    目录 国家统计局2020年最新省/市/县json数据(不包含港澳台) 全部数据 数据说明 获取省级数据 获取市级数据 获取县级数据 国家统计局2020年最新省/市/县json数据(不包含港澳台) 国家 ...

  10. 分省/市/县最低工资标准(2012-2021年)和 全国/省/市/县GDP数据(1949-2020年)

     一.最低工资数据 1.数据来源:各省\市\县政府公布资料 2.时间跨度:2012-2021年 3.区域范围:全国各省\市\县 4.指标说明: 部分数据如下: 二.各省市县人均GDP 1.数据来源:地 ...

最新文章

  1. [小明学算法]3.启发式搜索算法----A*算法之我见
  2. Linux添加/删除用户和用户组
  3. Windows核心编程_HOOk SOCKET实现封包拦截
  4. Android获取百度网盘路径,百度网盘秒传链接生成和提取方法教程
  5. 修复windows系统快捷方式图标变成白色的问题
  6. 多组输入,scanf的与按位取反操作符的运用。
  7. python语言智慧树期末答案_2020智慧树Python语言应用期末答案
  8. 如何去除2345好压的广告弹窗
  9. Swift 函数的定义及调用
  10. 通信专业考研就业专栏
  11. 如何防止你的代码被窃取?Python代码加密方案汇总(带实例验证)
  12. 【HTML】网页错误码详细报错
  13. OCCT学习003-----MFC单文档工程
  14. Android之数据存储-刘志远-专题视频课程
  15. 为什么很多大学生甚至研究生抛弃专业去做码农呢?
  16. zabbix2.0 监控华为Quidway S9306交换机实例[完整]
  17. 专题二:欧拉视频放大(基于相位)---原理解析
  18. Elasticsearch对数字检索——ngram
  19. Toolstrip 工具栏控件
  20. UICC 之 USIM 详解全系列——背景与系列介绍

热门文章

  1. ubuntu 18.04安装USB wifi接收器的驱动
  2. 1.hacking-lab基础关[详细writeup]
  3. 网络安全实验室----基础关
  4. 忘记Jenkins登陆密码怎么办?学会这招就够了
  5. 串口控制74HC164C语言,STM8 74hc164串口输出扩为并口输出子程序
  6. 互联网公司竞争日趋激烈
  7. 用HTML,CSS,JS制作一个网页计算器
  8. 几种常见PCB表面处理优缺点分析,用对场景很重要
  9. protobuf 的 undefined reference 问题
  10. 【仿牛客网笔记】 Spring Boot进阶,开发社区核心功能-事务管理