Jquery实现省市联动

兄弟,这个访问的时候可别再输入JSP路径了,得访问Servlet

1.查询省份:

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

        try {
            response.setContentType("text/html;charset=UTF-8");
            request.setCharacterEncoding("UTF-8");
            JqProvinceCityService jqProvinceCityService = new JqProvinceCityService();
            List<Province> list = jqProvinceCityService.findProvince();
            request.setAttribute("list", list);
            request.getRequestDispatcher("/JQ_province_city/JQ_province_city.jsp").forward(request, response);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
JqProvinceCityService:
/**
     * 寻找省份
     * @return
     * @throws SQLException
     */
    public List<Province> findProvince() throws SQLException {
        JqProvinceCityDao jqProvinceCityDao = new JqProvinceCityDao();
        return jqProvinceCityDao.findProvince();
    }
JqProvinceCityDao:
/**
     * 寻找省份
     * @return
     * @throws SQLException
     */
    public List<Province> findProvince() throws SQLException {
        QueryRunner queryRunner = new QueryRunner(C3P0JDBCUtils.getDataSource());
        String sql = "select * from province";
        List<Province> list = queryRunner.query(sql, new BeanListHandler<Province>(Province.class));
        return list;
    }

2.根据省份id查询城市

导包

这里写图片描述

JqCityServlet:
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            response.setContentType("text/html;charset=UTF-8");
            request.setCharacterEncoding("UTF-8");
            //接收数据
            String pid = request.getParameter("pid");
            JqProvinceCityService jqProvinceCityService = new JqProvinceCityService();
            List<City> list = jqProvinceCityService.findCity(pid);
            //将list集合生成xml
            XStream xStream = new XStream();
            //修改标签名
            xStream.alias("city", City.class);
            /**city就是标签名
             * <list>
             *  <city>
             *      <cid>1</cid>
             *      <cname>哈尔滨</cname>
             *      <pid>4</pid>
             *  </city>
             * </list>
             */
            String XMLStr = xStream.toXML(list);

            response.getWriter().print(XMLStr);

            /* 将类中属性作为 标签的属性
            xStream.useAttributeFor(City.class, "cid");
            xStream.useAttributeFor(City.class,"cname");
            xStream.useAttributeFor(City.class,"pid");*/
            /**类中属性设为标签的属性后,格式变为
             * <list>
             *  <city cid="1" cname="哈尔滨" pid="4">
             * </list>
             */

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
JqProvinceCityService:
/**
     * 根据pid查找城市
     * @param pid
     * @return
     * @throws SQLException 
     */
    public List<City> findCity(String pid) throws SQLException {
        JqProvinceCityDao jqProvinceCityDao = new JqProvinceCityDao();
        return jqProvinceCityDao.findCity(pid);
    }
JqProvinceCityDao:
/**
     * 寻找城市
     * @param pid
     * @return
     * @throws SQLException
     */
    public List<City> findCity(String pid) throws SQLException {
        QueryRunner queryRunner = new QueryRunner(C3P0JDBCUtils.getDataSource());
        String sql = "select * from city where pid = ?";
        List<City> list = queryRunner.query(sql, new BeanListHandler<City>(City.class), pid);
        return list;
    }

JQ_province_city.jsp:
<!-- 兄弟,一定要先导Jquery的包啊!再导自己写的script函数!顺序不能反了! -->
<script type="text/javascript" src="${ pageContext.request.contextPath }/js/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="/WebTest/JQ_province_city/JQ_province_city.js"></script>

<tr>
    <td>籍贯</td>
        <td>
            <select id="province" name="province" >
                <option>--请选择--</option>
                <c:forEach var="p" items="${ list }">
                    <option value="${ p.pid }">${ p.pname }</option>
                </c:forEach>
            </select>
            <select id="city" name="city">
                <option>--请选择--</option>
            </select>
        </td>
    </tr>
JQ_province_city.js:
$(function() {
    alert("111");
    //为省份下拉列表绑定事件
    $("#province").change(function() {
    alert("111");
        //获得省份id
        var pid = $(this).val();
        $.post("/WebTest/JqCityServlet",{"pid":pid},function(data) {
            var $city = $("#city");
            $city.html("<option>--请选择--</option>");
            //遍历,city为list中的标签名
            $(data).find("city").each(function() {
                var cid = $(this).children("cid").text();
                var cname = $(this).children("cname").text();
                //打印city名称, var $city = $("#city")
                $city.append("<option value='"+cid+"'>"+cname+"</option>");
            });
        });
    });
});


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值