java和js实现省市县级连

java和js实现省市县级连


首先建表分为三个表:
1、省这里省省的表
2、市
这是市的表
3、县
这是县的表


前端用select标签用来存放后端传来的省市县的内容

<select name="work.provinceid" id="s1">
	<option value="0">-- 请选择 --</option>
</select>
<select name="work.cityid" id="s2">
	<option value="0">-- 请选择 --</option>
</select>
<select name="work.areaid" id="s3">
	<option value="0">-- 请选择 --</option>
</select>

我们利用js来绑定这些标签获取后端传来的信息

$("#s1").ready(function () {
	/!*加载发布需求的省*!/
	//封装的方法调用方法获取数据"se01"相当于标识,后面会用到
	aja("address/findS1","se01");
	var ss = $("#s1 option").length;
	if(ss<=1){
		aja("address/findS1","s11");
		var s4 = $("#s4 option").length;
		if (s4<=1){
			aja("address/findS1","s44");
		}
	}
});

aja()

function aja(url,name){
    $.ajax({
        type: "get",   //请求方式
        datatype:"json",
        url: "/witkey_war_exploded/"+url,    //请求的url地址
        success: function (data) {
            //请求成功时处理
            //封装的用于处理请求成功后的方法
            valu(name,data);
        },
        error: function () {
            //请求出错处理
            alert("error")
        }
    });
}

用于处理请求成功后的代码

/*级联代码*/
function valu(name,data) {
	//这是点击事件进来的
    if (name == "s1") {
        var provinces = data;
        if (provinces != null) {
            for (var i in provinces) {
                var provin = provinces[i];
                $("#s1").append("<option value=" + provin.provinceid + ">" + provin.province + "</option>");
            }
        }

    } else if (name == "s11") {
    //系统加载函数来的
        var provinces = data;
        var ad = $("#h1").val();
        if (provinces != null) {=
            for (var i in provinces) {
                var provin = provinces[i];
                $("#s1").append("<option value=" + provin.provinceid + ">" + provin.province + "</option>");
            }
            //调用方法来加载市
            ss2(ad);
        }

    }
    /**/
    else if (name == "s2") {
    //点击事件启动
        var cities = data;
        //店家市之后,需要把上一次那个市的县给清除
        $("#s3").empty();
        $("#s3").append("<option value=" + 0 + ">-- 请选择 --</option>");
        for (var i in cities) {
            var cit = cities[i];
            $("#s2").append("<option value=" + cit.cityid + ">" + cit.city + "</option>");
        }
    } else if (name == "s22") {
        var cities = data;
        if (cities != null) {
            for (var i in cities) {
                var cit = cities[i];
                $("#s2").append("<option value=" + cit.cityid + ">" + cit.city + "</option>");
            }
            //调用查找县的方法
            ss3(ad);
        }
    }
    /**/
    else if (name == "s3") {
        var areas = data;
        for (var i in areas) {
            var area = areas[i];
            $("#s3").append("<option value=" + area.areaid + ">" + area.area + "</option>");
        }
    } else if (name == "s33") {
        var areas = data;
        var ad = $("#h3").val();
        if (areas != null) {
            for (var i in areas) {
                var area = areas[i];
                $("#s3").append("<option value=" + area.areaid + ">" + area.area + "</option>");
            }
        }
    }
}

加载时被调用的方法

function ss2(fla) {
	//获取s2子标签的数量
    var su = $("#s2 option").length;
    //判断,如果s2的子标签的数量小于等于1的话,那就调用方法查询后台的数据
    if (su<=1) {
        aja("address/findS2?provinceid=" + fla, "s22");
    }
}
//作用同上
function ss3(fla) {
    var su = $("#s3 option").length;
    if (su<=1) {
        aja("address/findS3?cityid=" + fla, "s33");
    }
}

后端代码

@Controller
@RequestMapping("address")
public class AddressController {

	//注入Service
    @Autowired
    private ProvincesService provincesService;
	//注入Service
    @Autowired
    private CitiesService citiesService;
	//注入Service
    @Autowired
    private AreasService areasService;
    
    //查询省
	@RequestMapping("findS1")
    @ResponseBody
    public List<Provinces> getProvinces(){
        return provincesService.listProvinces();
    }

	//查询市
    @RequestMapping("findS2")
    @ResponseBody
    public List<Cities> getCities_findS2(String provinceid){
        return citiesService.listCities(provinceid);
    }
	//查询县
    @RequestMapping("findS3")
    @ResponseBody
    public List<Areas> getAreas_findS3(String cityid){
        return areasService.listCities(cityid);
    }
}

service我省略了,因为不需要逻辑判断


mapper

查询省市县的sql片段

<!--省-->
<sql id="Base_Column_List" >
    id, provinceid, province
</sql>
<!--市-->
<sql id="Base_Column_List" >
    id, cityid, city, provinceid
</sql>
<!--县-->
<sql id="Base_Column_List" >
   	id, areaid, area, cityid
</sql>

查询省

<select id="listProvinces" resultMap="BaseResultMap" >
    select
    <include refid="Base_Column_List" />
    from provinces
</select>

查询市

<!--需要省的id-->
<select id="listCities" resultMap="BaseResultMap" parameterType="String" >
    select
    <include refid="Base_Column_List" />
    from cities
    where provinceid = #{provinceid,jdbcType=VARCHAR}
</select>

查询县

<!--需要市的id-->
<select id="listCities" resultMap="BaseResultMap" parameterType="String" >
    select
    <include refid="Base_Column_List" />
    from areas
    where cityid = #{cityid,jdbcType=VARCHAR}
</select>

这就是省市县级联的步骤了,大家可以练习一下

最后祝愿大家在java的路上,都能天天进步,有所收获,取得成绩。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值