JavaScript Ajax Json实现上下级下拉框联动效果实例代码


Posted in Javascript onNovember 23, 2013

最近尝试做出一个部门和人员的下拉框联动功能,部门和人员的对应关系是1:N

<div class="forntName">部门</div>
 <div class="inpBox">
 <select  name="department" id="department"  onchange="change();" style="width:200px;" >
 <option value='-1'>请选择</option>
 <s:iterator value="departmentList">
  <option value='<s:property value="departmentCode"/>'><s:property value="departmentName"/></option>
 </s:iterator>
 <select>  
 </div>
<SPAN style="WHITE-SPACE: pre"> </SPAN><div class="forntName">人员</div>
 <div class="inpBox">
 <select name="workorderOperator" id = "workorderOperator" style="width:200px;"> <s:iterator value="userList">
  <option value='<s:property value="userName"/>'><s:property value="userName"/></option>
 </s:iterator>
 </select>
 </div>

部门下拉框的onchange()事件走一个AJAX方法,返回一个JSON对象(JSON里放的是个LIST)。

js方法在此页面的写法:

<script type="text/javascript">
function change(){     
    var departmentCode =$("#department").val();      var params = {  
        'departmentCode':departmentCode  
    };  
    $.ajax({
        type: 'get',
        url: "departmentChangeEvent.shtml",
        cache: false,
        data: params,
        dataType: 'json',
        success: function(data){
      var sel2 = $("#workorderOperator");  
      sel2.empty();  
      if(data==null)
          {
       sel2.append("<option value = '-1'>"+"部门人员为空"+"</option>");
          }
      var items=data.list;
      if(items!=null)
         {
        for(var i =0;i<items.length;i++)
           {
            var item=items[i];
            sel2.append("<option value = '"+item.userName+"'>"+item.userChinesename+"</option>");
           };
          }     
      else
          {
       sel2.empty();  
          }
        },
        error: function(){
            return;
        }
    });
    //$.post(url, params, callback);  
}  
</script> 

此处返回的data里包含list(list见后文),list里包含着人员的代码,人员的姓名两个属性。然后先把人员下拉框empty(),通过select控件append方法 添加新的下拉框元素。

后台代码:

public String departmentChangeEvent() throws Exception{
  userList=service.queryForList("Workorder.queryUserByDepartmentCode", departmentCode);
  if(userList!=null&&userList.size()>0)
  {
   HttpServletResponse response = ServletActionContext.getResponse();
   response.setContentType("text/html;charset=utf-8");
   response.setHeader("Pragma","No-cache");
   response.setHeader("Cache-Control","no-cache");
   response.setHeader("Cache-Control", "no-store");
   PrintWriter writer = response.getWriter();
   JSONObject json = new JSONObject();
   Map map = new HashMap();
      map.put("list",userList);
      JSONObject jso = JSONObject.fromObject(map);
   writer.write(jso.toString());
      writer.flush();
      writer.close();  }
         return null;  
   } 

这个方法是部门切换事件,通过departmentCode(field域,有set,get)来求的当前部门下的用户放到userList中。

然后通过标准写法把userList放到一个定义好的HashMap中,KEY为list。

<STRONG> JSONObject jso = JSONObject.fromObject(map);</STRONG> 

这是最为关键的一步,有的json对象创建方法也可以为JSONObject jso = new JSONObject() ; 然后把list里的记录放入到jso中。。。

在这里是行不通的,前台会认为返回的是个字符串。。。

struts中 返回类型为json

  <action name="departmentChangeEvent" class="workorderAction" method="departmentChangeEvent"> 
       <result type="json">
   </result> 
        </action>
Javascript 相关文章推荐
Javascript实现视频轮播在pc端与移动端均可
Sep 29 Javascript
jquery中each遍历对象和数组示例
Aug 05 Javascript
sails框架的学习指南
Dec 22 Javascript
jQuery中each()方法用法实例
Dec 27 Javascript
jquery实现textarea 高度自适应
Mar 11 Javascript
javascript判断数组内是否重复的方法
Apr 21 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
Dec 12 Javascript
动态创建按钮的JavaScript代码
Jan 29 Javascript
JS实现的3des+base64加密解密算法完整示例
May 18 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
Aug 09 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
Nov 29 Javascript
JS创建自定义对象的六种方法总结
Dec 15 Javascript
javascript阻止浏览器后退事件防止误操作清空表单
Nov 22 #Javascript
js获取电脑分辨率的思路及操作
Nov 22 #Javascript
JS+CSS 制作的超级简单的下拉菜单附图
Nov 22 #Javascript
Mac/Windows下如何安装Node.js
Nov 22 #Javascript
javascript Event对象详解及使用示例
Nov 22 #Javascript
js Date概念详细介绍
Nov 22 #Javascript
页面定时刷新(1秒刷新一次)
Nov 22 #Javascript
You might like
如何在PHP中使用Oracle数据库(5)
2006/10/09 PHP
PHP下对数组进行排序的函数
2010/08/08 PHP
php设计模式 Mediator (中介者模式)
2011/06/26 PHP
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
2015/10/16 PHP
启用OPCache提高PHP程序性能的方法
2019/03/21 PHP
简单通用的JS滑动门代码
2008/12/19 Javascript
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
js中页面的重新加载(当前页面/上级页面)及frame或iframe元素引用介绍
2013/01/24 Javascript
javascript 树形导航菜单实例代码
2013/08/13 Javascript
javascript:json数据的页面绑定示例代码
2014/01/26 Javascript
用html+css+js实现的一个简单的图片切换特效
2014/05/28 Javascript
jQuery中append()方法用法实例
2015/01/08 Javascript
微信中一些常用的js方法汇总
2015/03/12 Javascript
纯js实现画一棵树的示例
2017/09/05 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
详解webpack运行Babel教程
2018/06/13 Javascript
Vue动画事件详解及过渡动画实例
2019/02/09 Javascript
Vue 后台管理类项目兼容IE9+的方法示例
2019/02/20 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
2020/07/30 Javascript
vant 中van-list的用法说明
2020/11/11 Javascript
Python之Web框架Django项目搭建全过程
2017/05/02 Python
Python爬虫常用库的安装及其环境配置
2018/09/19 Python
python实现公司年会抽奖程序
2019/01/22 Python
Python编程实现tail-n查看日志文件的方法
2019/07/08 Python
Pytorch DataLoader 变长数据处理方式
2020/01/08 Python
pycharm 添加解释器的方法步骤
2020/08/31 Python
python 用Matplotlib作图中有多个Y轴
2020/11/28 Python
为什么要做架构设计
2015/07/08 面试题
房产继承公证书
2014/04/09 职场文书
安全标语大全
2014/06/10 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书
创业计划书之养殖业
2019/10/11 职场文书
MySQL中一条update语句是如何执行的
2022/03/16 MySQL