• ajax学习4--实现三级联动demo


    功能需求:

    页面中有三个下拉框选项,分别为省下拉框,市下拉框,区/县下拉框
    选择省,则市下拉框中出现对应的该省下的市信息,选择市,则区/县下拉框中
    出现对应的该市下面的区/县信息
    

    技术分析:

    ajax技术+jsp+servlet+jdbc
    

    需求分析(思路):

    1、创建页面:页面中有三个下拉框,分别为省、市、区/县
    2、页面加载成功发起ajax请求,请求省的信息,并将响应结果
          填充到省下拉框中
    3、选择省触发一个新的js函数 的执行,该函数中发起新的ajax请求
          请求该省下的市信息,并将响应数据填充到市下拉框
    4、选择市信息触发一个新的js函数的执行,该函数中发起新的ajax请求
         请求该市下的区/县信息,并将数据填充到区/县下拉框中
    

    数据库设计:

    创建表(area):存储了省、市、区/县信息
    
        地区id:areaid
        地区名:areaname
        地区上级id:parentid
    

    sql语句设计:

    查询所有的省信息:
        select * from area where parentid=0;
    查询选择的省的市信息(假如:选择的山东省的areaid为110000,)
        select * from area where parentid=110000;
    查询选择的市的区/县信息(假如:选择的山东省的济南市areaid为110001)
        select * from area where parentid =110001;
    代码中
        select * from area where parentid=?;
    

    代码实现:

    pojo层:

    dao层:

    service层:

    controller层:

    public class AreaServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    	AreaService as = new AreaServiceImpl();
    	@Override
    	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		req.setCharacterEncoding("utf-8");
    		resp.setHeader("Content-Type", "text/html;charset=utf-8");
    		String pid = req.getParameter("parentid");
    		List<Area> list = as.getAreaInfoService(pid);
    		
    		resp.getWriter().write(new Gson().toJson(list));
    	
    	}
    
    }
    

    前端jsp页面:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    <style type="text/css">
    	div select{
    		 200px;
    		height: 30px
    	}
    
    </style>
    <!--引入jQuery文件  -->
    <script type="text/javascript" src="js/j.js"></script>
    
    <script type="text/javascript">
    	$(function(){
    		/* $.get("area",{parentid:0},function(data){
    			eval("var area = " + data);
    			$("#pre").empty();
    			for (var i = 0; i < area.length; i++) {
    				$("#pre").append("<option value='"+area[i].areaid+"'>"+area[i].areaname+"</option>");
    			}
    			
    			$("#pre").trigger("change");
    		}); */
    		getData(0,"pre");
    		
    		$("#pre").change(function(){
    			var areaid = $("#pre").val();
    			getData(areaid, "city");
    			/* $.get("area",{parentid:areaid},function(data){
    				eval("var area = " + data);
    				$("#city").empty();
    				for(var i=0; i<area.length; i++){
    					$("#city").append("<option value='"+area[i].areaid+"'>"+area[i].areaname+"</option>");
    				}
    				$("#city").trigger("change");
    			}); */
    		})
    		
    		$("#city").change(function(){
    			var areaid = $("#city").val();
    			getData(areaid, "town");
    			/* $.get("area",{parentid:areaid},function(data){
    				eval("var area = " + data);
    				$("#town").empty();
    				for(var i=0; i<area.length; i++){
    					$("#town").append("<option value='"+area[i].areaid+"'>"+area[i].areaname+"</option>");
    				}
    			}); */
    		})
    		
    		// 封装公共方法
    		function getData(parentid, sid){
    			$.get("area",{parentid:parentid},function(data){
    				eval("var area = " + data);
    				$("#"+sid).empty();
    				for (var i = 0; i < area.length; i++) {
    					$("#"+sid).append("<option value='"+area[i].areaid+"'>"+area[i].areaname+"</option>");
    				}
    				
    				$("#"+sid).trigger("change");
    			})
    		}
    	})
    	
    
    </script>
    
    </head>
    <body style="background: gray">
    
    <div style=" 750px; margin: auto;margin-top: 200px;">
    	省:<select name="" id="pre" ></select>
    	市:<select name="" id="city" ></select>
    	区县:<select name="" id="town" ></select>
    </div>
    
    </body>
    </html>
    
    重视基础,才能走的更远。
  • 相关阅读:
    第二天与第三天的总结
    随手写的总结关于
    第一次编程作业
    第一次博客作业
    CSS学习笔记-04 a标签-导航练习
    CSS学习笔记-03- 过渡模块之前奏篇 a标签的伪类选择器
    CSS学习笔记-02. 2D转换模块-形变中心点
    CSS学习笔记-01-2D转换模块
    从今天开始 每天记录HTML,CSS 部分的学习笔记
    回流和重绘
  • 原文地址:https://www.cnblogs.com/xzlf/p/12908147.html
Copyright © 2020-2023  润新知