Ajax(下,ajax+js+servlet 实现省市区三级联动)

Ajax实现省市区三级联动

js实现省市区三级联动(一个下拉框实现、页面可以多次引用)
在这里插入图片描述
html+js代码


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="js/jquery-1.8.3.js" type="text/javascript"></script>
</head>
<script type="text/javascript">
    $(function () {
        $.ajax({
            type:"get",
            url:"ProvinceServlet",
            dataType:"json",
            success:function (data) {
                for (var i = 0; i <data.length ; i++) {
                    $("#province").append("  <option value='"+data[i].pid+"'>"+data[i].pname+"</option>")
                }
            }
        });
        $("#province").change(function () {
            $("#city option:gt(0)").remove();
            $("#district option:gt(0)").remove();
            $.ajax({
                type:"get",
                url:"CityServlet?pid="+$("#province").val(),
                dataType:"json",
                success:function (data) {
                    for (var i = 0; i <data.length ; i++) {
                        $("#city").append("  <option value='"+data[i].pid+"'>"+data[i].cname+"</option>")
                    }
                }
            });
        });
        $("#city").change(function () {
            $("#district option:gt(0)").remove();
            $.ajax({
                type:"get",
                url:"DistrictServlet?cid="+$("#city").val(),
                dataType:"json",
                success:function (data) {
                    for (var i = 0; i <data.length ; i++) {
                        $("#district").append("  <option value='"+data[i].cid+"'>"+data[i].dname+"</option>")
                    }
                }
            });
        });
    });
</script>
<body>
        <select id="province">
            <option>请选择</option>
        </select><select id="city">
            <option>请选择</option>
        </select><select id="district">
            <option>请选择</option>
        </select></body>
</html>

Java代码

package com.zy.servlet.threelevel;

import com.zy.dao.ThreeLevelDao;
import com.zy.impl.ThreeLevelDaoImpl;
import net.sf.json.JSONArray;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.List;

@WebServlet(name = "CityServlet", value = "/CityServlet")
public class CityServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String pid=request.getParameter("pid");
        System.out.println(" pid "+pid);
        ThreeLevelDao dao = new ThreeLevelDaoImpl();
        List clist= dao.CityLevel(Integer.parseInt(pid));
        JSONArray json = JSONArray.fromObject(clist);
        System.out.println(" json "+json);
        response.getWriter().write(json.toString());

    }
}

package com.zy.servlet.threelevel;

import com.zy.dao.ThreeLevelDao;
import com.zy.impl.ThreeLevelDaoImpl;
import net.sf.json.JSONArray;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.List;

@WebServlet(name = "DistrictServlet", value = "/DistrictServlet")
public class DistrictServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String cid=request.getParameter("cid");
        System.out.println(" cid "+cid);
        ThreeLevelDao dao = new ThreeLevelDaoImpl();
        List dlist= dao.DistrictcLevel(Integer.parseInt(cid));
        JSONArray json = JSONArray.fromObject(dlist);
        System.out.println(" json "+json);
        response.getWriter().write(json.toString());
    }
}

package com.zy.servlet.threelevel;

import com.zy.dao.ThreeLevelDao;
import com.zy.entity.Province;
import com.zy.impl.ThreeLevelDaoImpl;
import net.sf.json.JSONArray;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.List;

@WebServlet(name = "ProvinceServlet", value = "/ProvinceServlet")
public class ProvinceServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ThreeLevelDao threeLevelDao = new ThreeLevelDaoImpl();
        List<Province> plist= threeLevelDao.ProvinceLevel();
        JSONArray json=JSONArray.fromObject(plist);
        System.out.println(" json "+json);
        response.getWriter().write(json.toString());


    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的基于 jQuery 和 Ajax 实现省市县三级联动的示例代码: HTML 代码: ```html <select id="province"> <option value="">请选择省份</option> </select> <select id="city"> <option value="">请选择城市</option> </select> <select id="district"> <option value="">请选择区县</option> </select> ``` JavaScript 代码: ```javascript $(function() { // 加载省份列表 $.ajax({ url: 'province.php', type: 'GET', dataType: 'json', success: function(data) { $.each(data, function(index, province) { $('#province').append('<option value="' + province.id + '">' + province.name + '</option>'); }); } }); // 加载城市列表 $('#province').change(function() { var provinceId = $(this).val(); if (provinceId != '') { $.ajax({ url: 'city.php', type: 'GET', dataType: 'json', data: {provinceId: provinceId}, success: function(data) { $('#city').empty().append('<option value="">请选择城市</option>'); $('#district').empty().append('<option value="">请选择区县</option>'); $.each(data, function(index, city) { $('#city').append('<option value="' + city.id + '">' + city.name + '</option>'); }); } }); } else { $('#city').empty().append('<option value="">请选择城市</option>'); $('#district').empty().append('<option value="">请选择区县</option>'); } }); // 加载区县列表 $('#city').change(function() { var cityId = $(this).val(); if (cityId != '') { $.ajax({ url: 'district.php', type: 'GET', dataType: 'json', data: {cityId: cityId}, success: function(data) { $('#district').empty().append('<option value="">请选择区县</option>'); $.each(data, function(index, district) { $('#district').append('<option value="' + district.id + '">' + district.name + '</option>'); }); } }); } else { $('#district').empty().append('<option value="">请选择区县</option>'); } }); }); ``` 省份列表数据接口(province.php)返回 JSON 数据格式: ```json [ {"id": "110000", "name": "北京市"}, {"id": "120000", "name": "天津市"}, // 省份数据... ] ``` 城市列表数据接口(city.php)根据省份 ID 返回 JSON 数据格式: ```json [ {"id": "110100", "name": "北京市"}, {"id": "110200", "name": "县城市"}, // 城市数据... ] ``` 区县列表数据接口(district.php)根据城市 ID 返回 JSON 数据格式: ```json [ {"id": "110101", "name": "东城区"}, {"id": "110102", "name": "西城区"}, // 区县数据... ] ``` 以上是一个简单的 jQuery 和 Ajax 实现省市县三级联动的示例代码,你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值