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 相关文章推荐
JS模拟面向对象全解(二、类型与赋值)
Jul 13 Javascript
jquery怎样实现ajax联动框(二)
Mar 08 Javascript
javascript-表格排序(降序/反序)实现介绍(附图)
May 30 Javascript
jquery特效 幻灯片效果示例代码
Jul 16 Javascript
javascript自定义的addClass()方法
May 28 Javascript
JQuery中的事件及动画用法实例
Jan 26 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
Sep 06 Javascript
使用jQuery或者原生js实现鼠标滚动加载页面新数据
Mar 06 Javascript
js实现文字向上轮播功能
Jan 13 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
Apr 13 Javascript
原生JS实现列表内容自动向上滚动效果
May 22 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
Aug 03 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 组件化编程技巧
2009/06/06 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
php提高网站效率的技巧
2015/09/29 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
2019/04/12 PHP
js计算页面刷新的次数
2009/07/20 Javascript
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
简单常用的幻灯片播放实现代码
2013/09/25 Javascript
Jquery取得iframe下内容的方法
2013/11/18 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
2016/11/10 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
2018/06/06 Javascript
JavaScript从原型到原型链深入理解
2019/06/03 Javascript
vue项目中锚点定位替代方式
2019/11/13 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
单利模式及python实现方式详解
2018/03/20 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
Django接收自定义http header过程详解
2019/08/23 Python
Python 取numpy数组的某几行某几列方法
2019/10/24 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
css3实现动画的三种方式
2020/08/24 HTML / CSS
html5拖曳操作 HTML5实现网页元素的拖放操作
2013/01/02 HTML / CSS
NFL Game Pass欧洲:在线观看NFL比赛直播和点播,以高清质量播放
2018/08/30 全球购物
商务英语大学生职业生涯规划书范文
2014/01/01 职场文书
服务标兵事迹材料
2014/05/04 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
批评与自我批评总结
2014/10/17 职场文书
护士求职自荐信范文
2015/03/04 职场文书
力克胡哲观后感
2015/06/10 职场文书
小学体育队列队形教学反思
2016/02/16 职场文书
2016大学生国家助学贷款承诺书
2016/03/25 职场文书
基于Python的EasyGUI学习实践
2021/05/07 Python
golang中的struct操作
2021/11/11 Golang
SQLServer中exists和except用法介绍
2021/12/04 SQL Server