日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

如何利用Ajax實現地區三級聯動詳解

瀏覽:345日期:2022-06-11 15:51:53

前言:

利用Ajax來實現一個地區的三級聯動,用Java代碼來讀json文件,先eclipse做一個簡單的,最基礎的。(json我用的jackson來解析,也可用fastjson-阿里巴巴的等還有很多)提供代碼,思路之類的,注釋也沒有自己去想去琢磨出來的思路好

first:首先先要熟悉json文件,并要想好利用什么類型去解析,這是最難的,最好找一個沒人的地方戴上耳機(對于初學)我是用maven來做的用到的jar坐標 :

<dependency>			<groupId>redis.clients</groupId>			<artifactId>jedis</artifactId>			<version>2.9.0</version>			<scope>compile</scope>		</dependency>		<dependency>			<groupId>javax.servlet</groupId>			<artifactId>javax.servlet-api</artifactId>			<version>3.1.0</version>			<scope>provided</scope>		</dependency>		<dependency>			<groupId>com.fasterxml.jackson.core</groupId>			<artifactId>jackson-databind</artifactId>			<version>2.11.2</version>		</dependency>

文件位置:

second:首先創建一個html文件 three.html

加了一個字體居中和大小的樣式以至于不會太難看,太原生

首先來實現–省--的局部刷新,利用Ajax

<script type="text/javascript">	$(function(){		$.post("province",function(data){			$.each(data,function(){				$("#province").append("<option value="+this.code+">"+this.name+"</option>");			})		},"json")	})</script>

然后來寫對應的ProvinceController.class的代碼(主要是邏輯,為什么我要用List<Map<String,Object>>類型)

package com.daben.controller;import java.io.FileInputStream;import java.io.IOException;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Map;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 com.fasterxml.jackson.core.type.TypeReference;import com.fasterxml.jackson.databind.ObjectMapper;@WebServlet("/province")public class ProvinceController extends HttpServlet{	private static final long serialVersionUID = -6513954606070061277L;	@Override	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {		this.doPost(req, resp);	}	@Override	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {		resp.setContentType("appliaction/json;charset=utf-8");//可加可不加,json可在前端標注也可在后端 看自己習慣 我前后都加了		ObjectMapper om = new ObjectMapper(); //jackson核心類		String path = req.getServletContext().getRealPath("/WEB-INF/classes/city_code.json");//利用servletContext(也有叫appliaction)來拿到文件的真實路徑,也可以利用加載器拿都一樣		FileInputStream fi = new FileInputStream(path);//流		List<Map<String, Object>> province = om.readValue(fi, new TypeReference<List<Map<String,Object>>>() {});//jackson解析的方法,為什么是這個方法,百度學的 利用TypeReference可解析你想要得到的類型		List<Map<String,Object>> list = new ArrayList<>();		Iterator<Map<String, Object>> iterator = province.iterator();//我用的迭代器遍歷的 foreach等 也可以 		while(iterator.hasNext()) {			Map<String, Object> map2 = iterator.next();			map2.remove("city");//可寫也可不寫			list.add(map2);		}		om.writeValue(resp.getWriter(), list);	}	}

在three.html添加改變事件

代碼比較簡單,就是跟簡單的清空 賦值 取值

$("#province").on("change", function(){			let code = $(this).find(":selected").val();			$.post("city",{"code":code}, function(data){				$("#city").empty();				$("#city").append("<option>---市---</option>");				$.each(data, function(){					$("#city").append("<option value="+this.code+">"+this.name+"</option>");				})			},"json");		});

再寫對應的CityController.class(代碼類似)我為什么還會強轉List<Map<String,Object>>類型

package com.daben.controller;import java.io.FileInputStream;import java.io.IOException;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Map;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 com.fasterxml.jackson.core.type.TypeReference;import com.fasterxml.jackson.databind.ObjectMapper;@WebServlet("/city")public class CityController extends HttpServlet{	private static final long serialVersionUID = -6513954606070061277L;	@Override	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {		this.doPost(req, resp);	}	@SuppressWarnings("unchecked")	@Override	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {		resp.setContentType("appliaction/json;charset=utf-8");		String code = req.getParameter("code");		req.getSession().setAttribute("cityCode", code);		ObjectMapper om = new ObjectMapper();		String path = req.getServletContext().getRealPath("/WEB-INF/classes/city_code.json");		FileInputStream fi = new FileInputStream(path);		List<Map<String, Object>> province = om.readValue(fi, new TypeReference<List<Map<String,Object>>>() {});		List<Map<String,Object>> list = new ArrayList<>();		Iterator<Map<String, Object>> iterator = province.iterator();		while(iterator.hasNext()) {			Map<String, Object> map2 = iterator.next();			if(map2.get("code").equals(code)) {				map2.remove("code");				map2.remove("name");				list=(List<Map<String,Object>>) map2.get("city");				break;			}					}		List<Map<String,Object>> list1 = new ArrayList<>();		Iterator<Map<String,Object>> iterator2 = list.iterator();		while(iterator2.hasNext()) {			Map<String,Object> next = iterator2.next();			next.remove("area");			list1.add(next);					}		om.writeValue(resp.getWriter(), list1);	}	}

不懂的話,可以先看一看city_code.json文件,多想一想

繼續來three.html

$("#city").on("change", function(){			let code = $(this).find(":selected").val();			$.post("village",{"code":code}, function(data){				$("#village").empty();				$("#village").append("<option>---縣---</option>");				$.each(data, function(){					$("#village").append("<option value="+this.code+">"+this.name+"</option>");				})			},"json");

代碼雷同以至于VillageController.class也是雷同,加了一些判斷而已多了一個循環,

package com.daben.controller;import java.io.FileInputStream;import java.io.IOException;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Map;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 com.fasterxml.jackson.core.type.TypeReference;import com.fasterxml.jackson.databind.ObjectMapper;@WebServlet("/village")public class VillageController extends HttpServlet{	private static final long serialVersionUID = -6513954606070061277L;	@Override	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {		this.doPost(req, resp);	}	@SuppressWarnings("unchecked")	@Override	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {		resp.setContentType("appliaction/json;charset=utf-8");		String code = req.getParameter("code");		String cityCode = (String)req.getSession().getAttribute("cityCode");		ObjectMapper om = new ObjectMapper();		String path = req.getServletContext().getRealPath("/WEB-INF/classes/city_code.json");		FileInputStream fi = new FileInputStream(path);		List<Map<String, Object>> province = om.readValue(fi, new TypeReference<List<Map<String,Object>>>() {});		List<Map<String,Object>> list = new ArrayList<>();		Iterator<Map<String, Object>> iterator = province.iterator();		while(iterator.hasNext()) {			Map<String, Object> map2 = iterator.next();			if(map2.get("code").equals(cityCode)) {				map2.remove("code");				map2.remove("name");				list=(List<Map<String,Object>>) map2.get("city");				break;			}					}		List<Map<String,Object>> list1 = new ArrayList<>();		Iterator<Map<String,Object>> iterator2 = list.iterator();		while(iterator2.hasNext()) {			Map<String,Object> next = iterator2.next();				if(next.get("code").equals(code)) {					next.remove("code");					next.remove("name");					list1 = (List<Map<String,Object>>)next.get("area");				}		}		om.writeValue(resp.getWriter(), list1);			}	}

完結:只提供了代碼,但是為什么這樣何不自己去想一想?

json地區文件下載:

關注公眾號 “程序員零距離” 回復 “201231” 即可下載

↑關注上方公眾號回復 “201231” 即可下載↑

思考?可不可以用xml文件來代替json文件?將jackson換成jsoup來解析?

到此這篇關于如何利用Ajax實現地區三級聯動詳解的文章就介紹到這了,更多相關Ajax實現地區三級聯動內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: Ajax
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
少妇精品久久久一区二区| 奶水喷射视频一区| 日韩一区二区三免费高清在线观看| 玖玖玖国产精品| 视频一区二区三区入口| 日韩精品亚洲专区| 精品成人18| 少妇精品导航| 99亚洲精品| 日本va欧美va欧美va精品| 国产精品中文字幕亚洲欧美| 韩国一区二区三区视频| 四虎884aa成人精品最新| 日韩另类视频| 免费人成网站在线观看欧美高清| 日本欧美一区二区在线观看| 国产一区二区三区久久久久久久久| 蜜桃av在线播放| 日韩视频一区| 日韩高清不卡在线| 激情综合五月| 亚洲免费影视| 久久精品国产在热久久| 国产伊人久久| 香蕉成人久久| 国产亚洲第一伦理第一区| 国内不卡的一区二区三区中文字幕| 欧美日韩一二三四| 日韩一区二区三区高清在线观看| 青草国产精品| 99热精品久久| 日韩在线观看中文字幕| 国产aⅴ精品一区二区三区久久| 伊人久久大香线蕉av不卡| 午夜亚洲福利| 97人人精品| 亚洲一区二区小说| 欧美国产另类| 蜜臀久久99精品久久一区二区| 一区福利视频| 国产精品日韩精品中文字幕| 欧美天堂视频| 亚洲三级网址| 欧洲亚洲一区二区三区| 99re国产精品| 久久尤物视频| 日韩一区二区免费看| 国产精品欧美三级在线观看| 久久蜜桃av| 国产美女亚洲精品7777| 精品一区在线| 国产探花一区| 在线日韩欧美| 国产精品宾馆| 亚洲一区国产一区| 国产成人精品一区二区三区免费 | 91p九色成人| 97人人精品| 日韩**一区毛片| 亚洲福利国产| 麻豆国产一区| 亚洲精品综合| 日韩在线中文| 国产精品久久国产愉拍| 国产精品美女| 欧洲亚洲一区二区三区| 国产精品99久久免费观看| 亚洲欧美日韩综合国产aⅴ| 国产aⅴ精品一区二区三区久久| 亚洲va久久久噜噜噜久久| 欧美日韩黑人| 精品免费av在线| 日韩精品免费观看视频| 亚洲一级特黄| 国产a久久精品一区二区三区| 四虎精品一区二区免费| 欧美日韩在线网站| 精品亚洲a∨| 国产麻豆一区| 日本久久二区| 蜜臀精品久久久久久蜜臀| 精品中文一区| 日韩精品久久久久久久电影99爱| 麻豆国产欧美日韩综合精品二区| 午夜精品影视国产一区在线麻豆| 黄色成人在线网址| 一区二区三区四区在线看| 精品一区二区男人吃奶| 国产亚洲精品美女久久| 日韩av中文字幕一区| 亚洲日本三级| 亚洲乱码久久| 日欧美一区二区| 婷婷综合电影| 日韩久久一区| 日产欧产美韩系列久久99| 综合一区二区三区| 国产亚洲激情| 国产视频一区三区| 99在线|亚洲一区二区| 午夜国产精品视频| 激情综合激情| 亚洲免费精品| 香蕉人人精品| 欧美日一区二区| 精品一区毛片| 99在线精品免费视频九九视 | av不卡在线| 亚洲一区网站| 蜜桃av一区二区在线观看| 国产精品嫩草99av在线| 丝袜国产日韩另类美女| 亚洲精品第一| 国产精一区二区| 国产伦精品一区二区三区视频| 69堂免费精品视频在线播放| 日韩欧美中文字幕电影| 国产麻豆精品| 成人日韩av| 久久精品导航| 中文精品在线| 日韩av网站在线观看| 国产精品大片免费观看| 国产精品777777在线播放 | 亚洲精品一二| 欧美日韩夜夜| 国产精品白浆| 国产一二在线播放| 久久一级电影| 亚洲一区激情| 久久国产婷婷国产香蕉| 精品一区二区三区的国产在线观看 | 亚洲精品护士| 欧美日韩一视频区二区| 国产一区二区三区黄网站| 国产在线成人| 日本免费一区二区视频| 欧美激情另类| 亚洲在线网站| 日韩精品亚洲一区二区三区免费| 国产伦精品一区二区三区在线播放| 精品国产欧美日韩| 亚洲精品国产偷自在线观看| 亚洲一二av| 国产一区二区三区黄网站| 激情婷婷综合| 日韩一区网站| 成人在线视频区| 亚洲免费中文| 六月丁香综合在线视频| 欧美日韩国产高清电影| 久久精品72免费观看| 久久婷婷亚洲| 国产探花一区二区| 日韩久久电影| 欧美视频久久| 欧美精品黄色| 国内精品亚洲| 视频一区二区三区入口| 久久精品伊人| 久久99伊人| 久久久久久色| 99成人超碰| 欧美日一区二区在线观看| 香蕉视频亚洲一级| 国产欧美69| 红桃视频国产精品| 精品久久一区| 美美哒免费高清在线观看视频一区二区| 91欧美极品| 亚洲一区不卡| 视频福利一区| 精品午夜av| 青青草国产成人99久久| 免费观看不卡av| yellow在线观看网址| 日韩av网站在线观看| 婷婷中文字幕一区| 国产一区二区三区四区五区| 亚洲tv在线| 亚洲激情二区| 日韩欧美二区| 久久精品伊人| 日产欧产美韩系列久久99| 97精品中文字幕| 久久精品超碰| 日韩免费精品| 亚洲一区二区免费看| 天堂中文av在线资源库| 国产精品探花在线观看| 少妇高潮一区二区三区99| 欧美成人国产| 日本精品不卡| 久久99国产精品视频| 久久国产精品免费一区二区三区| 在线视频精品| 婷婷综合社区| 久久精品国产99久久| 在线天堂中文资源最新版| 国产精品视频一区视频二区|