Ajax实现简单三级联动

使用AJax和JavaScript实现省市区三级联动 Ajax实现省市区 三级联动浅谈Ajax Ajax(Asynchronous JavaScript and XML)异步的javaScript和xml,即可以在整个页面不刷新的情况下,实现局部页面的刷新,主要要的例子有:新浪微博,当然也可以实现三级联动的效果,这正是本博客要着重介绍的内容。 原理图解: 效果图: 实现步骤: 编写三级联动页面 阅读详情

使用简单的Servlet响应前端请求,结合ajax实现省-市-县的三级联动(后台Service层和dao层代码省略)


前端页面展示:

  <body>
	<select id="provinceId" onchange="provinceChange(this.value)">
		<option value="default">--------请选择--------</option>
		<c:forEach var="province" items="${provinces}">
			 <option value="${province.code }">${province.name}</option>
		</c:forEach>
	</select>
	
	<select id="cityId" onchange="cityChange(this.value)">
		<option value="default">--------城市--------</option>
	</select>
	
	<select id="townId">
		<option value="default">--------区县--------</option>
	</select>
  </body>

js代码:

<script type="text/javascript">
  	function provinceChange(code){
  		var xhr = new XMLHttpRequest();
  		
  		xhr.onreadystatechange=function(){
  			if(xhr.readyState==4&&xhr.status==200){
  				eval('var cities=' + xhr.responseText);
  				//console.log(cities);
  				var list = document.getElementById("cityId");
  				while(list.hasChildNodes()){
  					list.removeChild(list.firstChild);
  			    }
  				
  				for(var i=0;i<cities.length;i++){
  					/* console.log(cities[i].name); */
  					var node = document.createElement("option");
  					var text = document.createTextNode(cities[i].name);
  					node.setAttribute("value", cities[i].code);
  					node.appendChild(text);
  					list.appendChild(node);
  					if(i==0){
  						node.setAttribute("selected", true);
  					}
  				}
  				cityChange(list.value);
  			}
  		};
  		var url = 'AddressServlet?' + 'type=province&code=' + code;
  		xhr.open("POST", url, true);
  		xhr.send(null);
  	}
  	
  	function cityChange(code){
  		var xhr = new XMLHttpRequest();
  		//console.log('change');
  		xhr.onreadystatechange=function(){
  			if(xhr.readyState==4&&xhr.status==200){
  				eval('var towns=' + xhr.responseText);
  				//console.log(cities);
  				var list = document.getElementById("townId");
  				while(list.hasChildNodes()){
  					list.removeChild(list.firstChild);
  			    }
  				
  				for(var i=0;i<towns.length;i++){
  					/* console.log(cities[i].name); */

  					var node = document.createElement("option");
  					var text = document.createTextNode(towns[i].name);
  					node.setAttribute("value", towns[i].code);
  					node.appendChild(text);
  					list.appendChild(node);

  				}
  			}
  		};
  		var url = 'AddressServlet?' + 'type=city&code=' + code;
  		xhr.open("POST", url, true);
  		xhr.send(null);
  	}
  </script>


Ajax向后台发送请求后获取到数据库中的相关信息,然后展示在前端页面中。


Servlet代码:

@SuppressWarnings("serial")
public class AddressServlet extends HttpServlet {

	private AddressService addressService = new AddressServiceImpl();

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		this.doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		PrintWriter out = response.getWriter();
		Gson gson = new Gson();
		if (request.getParameter("type") == null) {
			request.setAttribute("provinces", showProvinces());
			request.getRequestDispatcher("menu.jsp").forward(request, response);
		}
		else if(request.getParameter("type").equals("province")){
			response.setContentType("text/json;charset=utf-8");
			if(request.getParameter("code").equals("default")) return;
			int code = Integer.parseInt(request.getParameter("code"));
			out.println(gson.toJson(showCities(code)));
			//System.out.println(showCities(code));
			out.flush();
			out.close();
		}
		else if(request.getParameter("type").equals("city")){
			response.setContentType("text/json;charset=utf-8");
			if(request.getParameter("code").equals("default")) return;
			int code = Integer.parseInt(request.getParameter("code"));
			out.println(gson.toJson(showTowns(code)));
			//System.out.println(showTowns(code));
			out.flush();
			out.close();
		}
	}

	private List<Province> showProvinces() {
		return addressService.getProvince();
	}
	
	private List<City> showCities(int code){
		return addressService.getCity(code);
	}
	
	private List<Town> showTowns(int code){
		return addressService.getTown(code);
	}
}





javaweb省市县三级联动 Ajax 使用javweb 和 ajax 相结合, 实现省市县三级联动 立即下载

相关推荐

Ajax实现的三级联动下拉菜单

struts2+jsp+json+javascript实现的三级下拉菜单,没有service和dao层,数据是虚拟的。需要的欢迎下载。项目直接导入myeclipse就可以使用。访问路径localhost:8080/ajax_day02_hw/proviencecityarea.jsp

Ajax案例之三级联动

功能需求: 页面中有三个下拉框,分别为省下拉框、市下拉框、区/县下拉框。 选择省,则市下拉框中出现对应的该省下的市信息, 选择市,则区/县下拉框中出现对应的该市下的区/县信息 技术分析: ajax技术+servlet+jsp+jdbc 需求分析(思路): 1.创建页面:页面中有三个下拉框,分别为省/市/区、县; 2.页面加载成功发起ajax请求,请求省的信息,并将响应结果填充到省所在的下拉框; 3...

fachew的博客 646

告别ORB-SLAM2?手把手教你用OpenVSLAM在Ubuntu 20.04上跑通第一个SLAM Demo(含依赖库避坑指南)

本文详细介绍了如何在Ubuntu 20.04系统上从ORB-SLAM2迁移到OpenVSLAM,包括环境配置、依赖库安装、编译调整及性能优化。OpenVSLAM凭借其模块化设计和多相机支持,在SLAM领域展现出显著优势,适合机器人导航和AR应用开发。文章还提供了实用的避坑指南和进阶技巧,帮助开发者高效完成迁移。

weixin_42524499的博客 255

Ajax实现省市区三级联动(JavaWeb)

先看下效果图: 项目结构: 1.准备数据库 表结构: 我把数据库、jquery和项目所用的jar包上传到了百度云盘,如果有需要可以下载。 链接:https://pan.baidu.com/s/1VijPG7LPeJoOHCa2mZsrww 提取码:fz86 先分析下数据库里面的数据,分析省份、城市、地区之间的联系。 分析ajax执行过程: ajax向服务器发送请求,Servlet接收ajax发来的请求,获取ajax传递的数据。服务器内部调用dao类,获取数据库中的数据,此时数据是Java对象或J

不是七七子的博客 1815

基于Simulink的鲸鱼优化算法(WOA)MPPT仿真

摘要:本文介绍了基于Simulink的鲸鱼优化算法(WOA)在光伏MPPT控制中的应用。WOA模拟座头鲸的"气泡网捕食策略",通过包围猎物、螺旋收缩和随机搜索三阶段动态平衡全局探索与局部开发能力,有效解决局部阴影导致的多峰P-V曲线问题。文章详细讲解了WOA-MPPT的Simulink建模过程,包括多峰光伏阵列建模、WOA控制器实现和Boost变换器控制。仿真结果显示,在三种典型工况下,WOA-MPPT的追踪效率>99.3%,动态响应时间<0.15s,性能优于传统算法。最后提出了混合WO

amy_mhd的博客 72

基于YOLOv10的PCB电子元件智能识别系统设计与实现

数据预处理模块:负责对原始PCB图像进行标注、增强和格式转换模型训练模块:基于YOLOv10架构进行模型训练和优化推理检测模块:加载训练好的模型进行实时检测用户界面模块:提供友好的交互界面,方便用户操作和结果可视化YOLO(You Only Look Once)系列算法自2016年提出以来,经历了多次迭代更新。YOLOv1-v3:奠定了YOLO系列的基础架构YOLOv4-v7:引入大量优化技巧和网络结构改进YOLOv8-v9:进一步优化模型结构和训练策略YOLOv10。

YOLO 156

ajax + servlet 实现三级联动

create table province ( pid int, #省编号 主键 pname varchar(20) #省名称 ); insert into province(pid,pname) values(1,'吉林省'); insert into province(pid,pname) values(2,'辽宁省'); insert into province(pid,

ETHAN IN IT 3704

ABAP 里解构引用操作符 ->* 的使用方法详解

解除引用操作符->*可用于将“类型为REF TO …的引用变量”的值(即该引用所指向内存)取出,从而访问其实际值或内部组件。具体地,若dref是一个“引用变量”,则表达式dref->*代表对该引用进行“解除引用”,使得程序按静态类型将其视为实际类型的值对象。例如,若lr类型声明为,则lr->*表示“将 lr 引用的INT4对象看作INT4类型并访问其值”。注:若 “数据引用变量” 的静态类型是通用类型DATA,则只能在这种上下文中使用->*。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 480

用ajax做三级联动,利用Ajax怎么实现一个三级联动功能

利用Ajax怎么实现一个三级联动功能发布时间:2021-03-08 11:05:27来源:亿速云阅读:76作者:Leah本篇文章给大家分享的是有关利用Ajax怎么实现一个三级联动功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。首先建立数据库,如下所示接口省importjava.util.List;publicinterface...

weixin_29924799的博客 684

你的小程序地图功能还只是“摆设”吗?支付宝地图API的深度玩法都在这里了!

🏆本文收录于《滚雪球学支付宝小程序开发》专栏,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 1821

在 SAP BTP Cloud Foundry 环境中开发 SAP HANA 的完整实战路线图

SAP HANA Cloud迁移路径解析:从本地到云原生的数据库现代化 本文梳理了SAP HANA在Cloud Foundry环境中的架构定位和实施路径,针对不同起点的项目提供迁移建议。核心内容包括: SAP HANA Cloud在Cloud Foundry中的双重角色:既作为平台服务提供数据库实例,又通过HDI容器管理MTA应用中的数据库工件。 针对四类典型项目起点的迁移策略: 绿地项目:直接采用CAP+SAP HANA Cloud组合 已有HANA service或XS advanced项目:需对照兼容

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 266

Ajax实现三级联动

使用Ajax局部刷新进行一个省,市,区的选择,选中省时会自动刷新市里面的内容,以此类推,来实现省,市,区的选择。

月与清酒的博客 1112

在 Eclipse 里快速用上 SAP Joule:ABAP 开发者的 AI 助手上手指南

本文介绍了SAP Joule for developers如何集成在ABAP开发工具中,为开发者提供AI辅助能力。主要内容包括: Joule作为ADT的增强层,直接嵌入开发流程,支持在项目资源管理器、代码编辑器等场景下通过上下文菜单调用AI功能。 核心使用方式:打开Joule视图后,可在开发对象、代码片段等上下文中使用自然语言交互,请求解释、生成测试或获取示例代码。 重点功能: Explain:解释现有代码逻辑,降低理解成本 ABAP Unit测试生成:快速创建与上下文相关的测试用例 支持在传输管理器等完整

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 396

省市区联动 ajax实现,jquery+ajax实现省市区三级联动效果简单示例

本文实例讲述了jquery+ajax实现省市区三级联动效果。分享给大家供大家参考,具体如下:一直想学习下Ajax,没时间,汗,这借口太牵强了.下了点教程在手机里,翻了好几遍了,没实战一次.最近的项目里需要Ajax实现效果,就下了个jquery,然后找了个实例,学习了一下,幡然醒悟,NND,jquery果然强大的一塌糊涂,实现Ajax简直就是不费吹灰之力.下面把学习过程跟大家分享下,虽然还没有搞清楚...

weixin_42515340的博客 551

动态视频目标追踪系统:基于YOLOv11+DeepSORT的从入门到实战全流程指南

仅保留车辆类别(假设车辆类别ID为2)if det.class_index == 2: # 车辆类别ID通过本指南,你已完成从环境搭建数据准备模型训练到追踪系统与UI界面的全流程,搭建了一套完整的动态视频目标追踪系统。该系统在安防监控、交通管理等场景中具有实用价值,可实现目标的实时稳定追踪。未来,你可尝试结合多模态特征(如目标外观+运动特征)提升追踪鲁棒性,或探索轻量化模型部署(如TensorRT加速),让系统在边缘设备上也能高效运行。

LXY_LOVE36的博客 142

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ajax三级联动怎么回显,简单实现ajax三级联动效果

本文实例为大家分享了ajax三级联动效果展示的具体代码,供大家参考,具体内容如下主页面代码Title请选择请选择请选择$.ajax({data: {parent_id: 0}, //发送的数据dataType: "json", //返回值的类型 text为string型type: 'post', //发送请求的方法(get)url: 'sheng_l.php',//发送请求的地址success:...

weixin_30495795的博客 406

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jquery ajax 省市县,jquery+ajax实现省市区三级联动效果简单示例

本文实例讲述了jquery+ajax实现省市区三级联动效果。分享给大家供大家参考,具体如下:一直想学习下Ajax,没时间,汗,这借口太牵强了.下了点教程在手机里,翻了好几遍了,没实战一次.最近的项目里需要Ajax实现效果,就下了个jquery,然后找了个实例,学习了一下,幡然醒悟,NND,jquery果然强大的一塌糊涂,实现Ajax简直就是不费吹灰之力.下面把学习过程跟大家分享下,虽然还没有搞清楚...

weixin_36244175的博客 485

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ThinkPHP快速简单实现Ajax地区三级联动(很详细)

首先呢,我们准备好TP框架还有一个表,地区表,其中包含以下字段: 建表语句: CREATE TABLE `tp_region` (   `region_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,   `parent_id` smallint(5) unsigned NOT NULL DEFAULT '0',   `r

renxing518的博客 4276

php jquery ajax json 全国省市区三级联动下拉列表 简单实现

<br />tag:php,javascript,js,jquery,ajax,json,全国省市区三级联动,三级联动,下拉列表,上海顶讯,刘小溪<br /><br />之前也写过类似的功能,但那时候都是用AJAX把远程返回的一个select 下拉列表直接innerHTML在指定的id上面。很明显,这样的话,如果想把下拉列表变成checkbox ,那么就要修改远程请求的php代码,不够灵活。<br />很久以前就听小溪说,数据传送的时候,应该保持其原样,即数据源不变,我们得到数据源以后,根据我们的要求,再将

lqc851011的专栏 2340

asp.net ajax简单实现省市区三级联动(一):一般实现

最近看了点有关于asp.net ajax的知识,顺便写了一个很常用的省市区三级联动做练习。/// function GetSheng() //绑定省{ FjdcWS.GetSheng(SelectBind, null, "GetSheng"); //FjdcWS为自己写的一个WebService的类名 function GetShi(

蛋疼时代 3369

通过AJAX调用页面后台代码方法实现省级三级联动效果 (简单练习)前台

http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> http://www.w3.org/1999/xhtml">                       $(function () {          $("#ProvinceList").bind("keyup change", function (e) {

3415

asp.net ajax简单实现省市区三级联动(二):面向对象实现

继一般实现之后,利用asp.net ajax在js上对面向对象的支持,在此实现了相同的功能。/// Type.registerNamespace("FjdcHtmlUserControl"); FjdcHtmlUserControl.ShengShiQuSelect = function(shengSelect, shiSelect, quSelect, action){

蛋疼时代 1274

mysql三级联动_tp5.1+mysql+ajax实现三级联动

题记:说道三级联动现在想想很简单,我搞这个东西搞了一天一夜,三点多还一点头绪都没有,网上找了很多资料,但是都是没啥用~~后来在大佬们的提示下,才算勉强完成。现在回想下来,关键是我对ajax一窍不通。这里我想说一下的是,如果你和我一样ajax一窍不通,我建议你先去看一下ajax post和get 教程http://www.runoob.com/jquery/jquery-ajax-get-post...

weixin_39638708的博客 283

如何用JS实现三级联动功能

这其实是个挺简单的功能,就是我刚开始写的时候思路没有捋清楚,导致写的时候很困难。写代码前一定要先捋清思路,先写伪代码。下面请看代码(有注释很清晰了)

2301_79420857的博客 2261
上一篇: Linux 下的 Nginx 配置
下一篇: SpringMVC 简单使用
mOralinTegrity
博客等级 码龄10年 3粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值