zoukankan      html  css  js  c++  java
  • 下拉框表单联动案例

    这几天忙着做学校的项目,感觉好久没有更新博客了,来整理一下。

    由于要实现的功能是表单联动,只能自己去写ajax来实现提交给后台接口了,好久没有写前端,好多东西都忘记了,只能可怜巴巴的用原生的js去实现。

    特此总结一下:首先要使用SpringMVC来接收和返回JSON格式的数据,必须要先配置:

    在spring-mvc.xml加上如下配置:

                <mvc:annotation-driven />    

    由于使用的是maven项目,因此需要加上相关dependency:

     1         <dependency>
     2             <groupId>org.codehaus.jackson</groupId>
     3             <artifactId>jackson-core-lgpl</artifactId>
     4             <version>1.8.1</version>
     5         </dependency>
     6 
     7         <dependency>
     8             <groupId>org.codehaus.jackson</groupId>
     9             <artifactId>jackson-mapper-lgpl</artifactId>
    10             <version>1.8.1</version>
    11         </dependency>

        在controller里这样写:

    1     // 区域表单联动查询
    2     @RequestMapping(value = "/basicinfo/area/getChild.action" , method = {RequestMethod.POST })
    3     public @ResponseBody List<Area> getChild(@RequestBody Area area ) {
    4         System.out.println(area.getParentId()+"-----");
    5         HashMap<String, Integer> map = new HashMap<String, Integer>();
    6         map.put("parentId", area.getParentId());
    7         List<Area> dataList = areaService.find(map);
    8         return dataList;
    9     }

    注意:前台ajax提交过来的参数映射进被@RequestBody注解的Area类,因此,ajax里的参数名称必须要和Area类里的参数名称一致,否则会出现HTTP请求415,类型不支持的情况。返回到list数据也要加上注解。

    在js里应该这样写:

     1 //val 提交隐藏域,并且调用ajax去联动第二个表单
     2     function setFirstParent(val) {
     3         var element = document.getElementById("fp");
     4         element.value = val;
     5         var param = {
     6             "parentId" : val
     7         };
     8         var select = document.getElementById("secondSelect");
     9         //先清空,在添加一个请选择
    10         $("#secondSelect").find("option").remove();
    11         var option = document.createElement("option");
    12         option.setAttribute("value", "0");
    13         option.appendChild(document.createTextNode("--请选择--"));
    14         select.appendChild(option);
    15         $.ajax({
    17                     url : "${pageContext.request.contextPath}/basicinfo/area/getChild.action", //请求地址
    18                     type : "POST", //请求方式
    19                     data : JSON.stringify(param), //请求参数
    20                     dataType : "json",
    21                     contentType : 'application/json;charset=utf-8', //指定为json类型
    22                     success : function(response) {
    23                         for (var i = 0; i < response.length; i++) {
    24                             var option = document.createElement("option");
    25                             option.setAttribute("value", response[i].id);   //添加value
    26                             option.appendChild(document
    27                                     .createTextNode(response[i].areaName));   //添加显示的内容
    28                             select.appendChild(option);
    29                         }
    30                     },
    31                     fail : function(status) {
    32                         alert("接口调用异常");
    33                     }
    34                 });
    35     }

    在第一个下拉菜单的onchange事件里调用相关的参数来查询第二个下拉菜单,注意在联动查询之前,需要先清空当前菜单的options然后再添加进去。

  • 相关阅读:
    循环的中断
    创建.NET应用程序所经历的步骤
    完整的开发一个ContentProvider步骤
    Perl 基于OOP的数据库链接(增删改查)
    Perl 基于OOP的数据库链接(优化)
    Perl 基于OOP的数据库链接
    Perl oop链接数据库
    Perl oop研究
    PythonStudy——内存管理机制 Memory management mechanism
    博客园美化——Design by Venti
  • 原文地址:https://www.cnblogs.com/jy107600/p/8056491.html
Copyright © 2011-2022 走看看