jquery级联省份关联例子

首先是导包
jquery-3.4.1.js
jackson-annotations-2.9.0.jar
jackson-core-2.9.0.jar
jackson-databind-2.9.0.jar
mysql-connector-java-8.0.22.jar
servlet-api.jar

然后是jsp的书写

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>省市级联查询</title>

  </head>
  <body>
      <script type="text/javascript" src="js/jquery-3.4.1.js"></script>
      <script type="text/javascript">
          function loadajax(){
            $.ajax({url:"see",dataType:"json",success:function (resp) {
                //测试是否收到
                //alert(resp); 能够拿到数据
                //删除旧数据
                $("#province").empty();
                //遍历json数组用append放在选择框内
                $(resp).each(function (index,element) {
                  let data=element.name;
                  $("#province").append("<option value="+element.id+">"+data+"</option>");
                });
              }})
          }
          $(function () {
            loadajax();
            //$(function ()在页面的dom对象加载完成后执行的函数,在此发起ajax
            //绑定按钮
              $("#loadbt").on("click",function () {
                loadajax();
                //测试省份的value是否正确
                // $("#loadct").on("click",function () {
                //       alert($("#province").val());
                // })
              })
            //给省份的select绑定一个change事件,当select内容发生变化时,触发事件
            $("#province").on("change",function () {
              // $.ajax({url:"sea",data:{"id":$("#province").val()},dataType:"json",success:function (resp){
              //     //删除旧数据
              //     $("#city").empty();
              //     //遍历json数组用append放在选择框内
              //     $(resp).each(function (index,element) {
              //       let data=element.name;
              //       $("#city").append("<option value="+element.id+">"+data+"</option>");
              //     });
              //   }})
              //优化用get
              $.get("sea",{"id":$("#province").val()},callback,"json")})})
          //定义一个处理返回数据的函数
          function callback(resp) {
             $("#city").empty();
              //遍历json数组用append放在选择框内
              $(resp).each(function (index,element) {
              $("#city").append("<option value="+element.id+">"+element.name+"</option>");
            })
          }
      </script>
    <div>
      <table border="2px" align="center">
        <tr align="center">
          <td colspan="3">省市级联查询</td>
        </tr>
          <tr>
            <td>省份:</td>
            <td>
              <select id="province">
                <option value="0">请选择....</option>
              </select>
            </td>
            <td>
              <input type="button" value="load数据" id="loadbt">
            </td>
          </tr>
        <tr>
          <td>城市</td>
          <td colspan="2">
            <select id="city">
              <option>请选择....</option>
            </select>
          </td>
        </tr>
      </table>
    </div>
  </body>
</html>

Web.xml的配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
<!--    声明查询所有省份的servlet-->
    <servlet>
        <servlet-name>oneServlet</servlet-name>
        <servlet-class>ser.oneServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>oneServlet</servlet-name>
        <url-pattern>/see</url-pattern>
    </servlet-mapping>
    <!--    声明查询所有省份的servlet完成-->
<!-- 声明查询省份所含城市   -->
    <servlet>
        <servlet-name>twoServlet</servlet-name>
        <servlet-class>ser.twoServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>twoServlet</servlet-name>
        <url-pattern>/sea</url-pattern>
    </servlet-mapping>
<!-- 声明查询省份所含城市完成   -->
</web-app>

Dao

package Dao;

import P.City;
import P.Province;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class searchDao {
    JDBC jdbc=new JDBC();
    //查询所有的省份信息
    public List<Province> GetProvince(){
        String sql="select id,name,jiancheng,shenghui from province order by id";
        PreparedStatement pre=jdbc.createStatement(sql);
        ResultSet res;
        List<Province> province=new ArrayList<>();
        Province p=null;
        try {
            res= pre.executeQuery();
            while (res.next()){
                p=new Province();
                p.setId(res.getInt("id"));
                p.setName(res.getString("name"));
                p.setJiancheng(res.getString("jiancheng"));
                p.setShenghui(res.getString("shenghui"));
                province.add(p);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            jdbc.close();
        }
        return province;
    }
    //查询省份下面的所有城市
    public List<City> GetCity(Integer provinceid){
        List<City> city=new ArrayList<>();
        String sql="select id,name from city where provinceid=?";
        PreparedStatement pre=jdbc.createStatement(sql);
        ResultSet res;
        City c=null;
        try {
            pre.setInt(1,provinceid);
            res=pre.executeQuery();
            while (res.next()){
                c=new City();
                c.setId(res.getInt("id"));
                c.setName(res.getString("name"));
                city.add(c);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            jdbc.close();
        }
        return city;
    }
}

还有Servlet,都是用的get方法

        response.setContentType("text/html;charset=utf-8");
        //调用dao获取所有省份的信息,是一个list集合
        searchDao search=new searchDao();
        List<Province> provinces= search.GetProvince();
        String json=null;
        PrintWriter pw;
        if (null!=provinces){
            ObjectMapper om=new ObjectMapper();
            json=om.writeValueAsString(provinces);
        }
        pw= response.getWriter();
        pw.print(json);
        pw.flush();
        pw.close();
        searchDao search=new searchDao();
        response.setContentType("text/html;charset=utf-8");
        String provinceid= request.getParameter("id");
        List<City> city= search.GetCity(Integer.parseInt(provinceid));
        String c=null;
        if (null!=city){
            ObjectMapper om=new ObjectMapper();
            c=om.writeValueAsString(city);
        }
        PrintWriter pw= response.getWriter();
        pw.print(c);
        pw.flush();
        pw.close();
### 回答1: jQuery级联展示是一种使用jQuery框架来实现多级连动效果的交互技术。通常情况下,当一个下拉菜单的选项发生变化时,我们需要通过发起异步请求更新下一个下拉菜单的选项列表。而使用jQuery级联展示则可以避免这种数据传输延迟的问题。它可以实现根据前一个下拉菜单中选定的选项,自动显示下一个下拉菜单中相应的选项,从而提高用户的交互体验和效率。 实现一个jQuery级联展示可以分为以下几个步骤: 1. 定义HTML代码,即各个下拉菜单的结构和选项内容。 2. 使用jQuery获取第一个下拉菜单的选项,并在选项发生变化时更新第二个下拉菜单中的选项。 3. 使用jQuery获取第二个下拉菜单的选项,并在选项发生变化时更新第三个下拉菜单中的选项。 4. 以此类推,直到所有下拉菜单中的选项都可以进行级联展示。 jQuery级联展示可以应用于多种场景,例如省市区三级联动的地址选择、商品筛选中的多选框联动、时间选择器中的年月日联动等。当然,实现级联展示也需要考虑到用户的交互习惯和界面设计的美观性,从而达到最佳的用户体验。 ### 回答2: jQuery级联展示(也称为下拉列表级联)是一种前端开发技术,它通过创建互相依赖的下拉列表来帮助用户进行选择。例如,在一个商品交易网站上,一个级联展示可以用于让用户选择产品类别和子类别,以便更容易地浏览和购买所需的产品。 实现级联展示的关键是使用jQuery编写可交互的脚本,以响应用户的选择,并根据所选的选项更新其他下拉列表。这通常涉及到从数据库或其他数据源获取相关信息,并在下拉列表中显示所需的选项和数据。 在实际应用中,级联展示可能需要处理不同的情况,例如:动态添加选项、动态加载选项、选项依赖关系的复杂性等。因此,编写一个可靠、易于使用的级联展示需要更多的工作和技巧。 在jQuery的生态系统中,有许多用于构建级联展示的插件和库。这些插件和库可以大大简化级联展示的实现,并提供更多的功能和特性,如搜索、多级别支持、样式定制等。 总的来说,jQuery级联展示是一种重要的界面交互技术,它可以提升用户对数据选择的便捷性,并增强用户体验,同时也有助于提高网站的可用性和可访问性。 ### 回答3: jQuery级联展示是指控制不同HTML元素之间的数据关系,实现一个或多个下拉框的内容随着选择而动态改变的效果。这种技术的应用场景十分广泛,比如省市县/区选择、商品分类筛选等。 jQuery级联展示原理基于DOM事件机制,一般采用change事件触发处理函数的方式实现。首先,需要准备好几个下拉框(select元素),可以使用HTML语言标记他们,同时需要为每一个下拉框编写具有特定功能的jQuery代码。 在代码中,为下拉框的change事件绑定处理函数,函数中通过选择器找到对应的后续下拉框元素,清空它的option,再根据当前选中的option的value值,从预定的JSON格式的数据源中筛选出相应的值并将这些值渲染为新的option。具体实现时,可以采用jQueryAjax异步数据请求机制,请求后端接口返回数据源,或者将数据源直接嵌入前端HTML文本中。还可以提高用户交互度和体验性,应用下拉框搜索插件、动画和Loading效果等。 因为jQuery的良好兼容性与灵活性,被广泛应用于各类前端Web开发项目中。因此,不少JavaScript框架和组件库(如Bootstrap、jQueryUI、vue.js等)也提供了相关功能,以方便开发者快速实现级联展示的效果。总的来说,jQuery级联展示效果简单易用,但也需要注意前端性能、代码质量、数据安全与可维护性等方面的问题。涉及到的知识领域包括HTML/CSS/JavaScript语言、jQuery编程、JSON格式理解等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

syf_wfl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值