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 相关文章推荐
window.location.hash 使用说明
Nov 08 Javascript
用户代理字符串userAgent可实现的四个识别
Sep 20 Javascript
jQuery Validate初步体验(一)
Dec 12 Javascript
深入解析JavaScript中的立即执行函数
May 21 Javascript
jQuery事件用法详解
Oct 06 Javascript
深入理解JavaScript中的for循环
Feb 07 Javascript
js 获取图像缩放后的实际宽高,位置等信息
Mar 07 Javascript
javascript中json对象json数组json字符串互转及取值方法
Apr 19 Javascript
基于require.js的使用(实例讲解)
Sep 07 Javascript
Three.js如何实现雾化效果示例代码
Sep 27 Javascript
jQuery轮播图功能制作方法详解
Dec 03 jQuery
vue任意关系组件通信与跨组件监听状态vue-communication
Oct 18 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获取客户端电脑屏幕参数的方法
2015/01/09 PHP
php源码的使用方法讲解
2019/09/26 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
javascript 面向对象全新理练之数据的封装
2009/12/03 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2011/06/27 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
2013/09/03 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
js 实现浏览历史记录示例
2014/04/20 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
用JavaScript实现PHP的urlencode与urldecode函数
2015/08/13 Javascript
JS触摸与手势事件详解
2017/05/09 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
2017/06/01 Javascript
jQuery条件分页 代替离线查询(附代码)
2017/08/17 jQuery
简单了解小程序+node梳理登陆流程
2019/06/24 Javascript
用 js 写一个 js 解释器过程详解
2019/08/02 Javascript
javascript单张多张图无缝滚动实例代码
2020/05/10 Javascript
[05:56]第十六期——新进3大C之小兔基
2014/06/24 DOTA
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
python的re模块应用实例
2014/09/26 Python
python类和函数中使用静态变量的方法
2015/05/09 Python
Python fileinput模块使用实例
2015/05/28 Python
Python正则表达式使用经典实例
2016/06/21 Python
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
Django 请求Request的具体使用方法
2019/11/11 Python
Python 实现向word(docx)中输出
2020/02/13 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
学校消防演习方案
2014/02/19 职场文书
乡村卫生服务一体化管理实施方案
2014/03/30 职场文书
政府门卫岗位职责
2014/04/29 职场文书
学生检讨书如何写
2014/10/30 职场文书
2016元旦晚会主持词
2015/07/01 职场文书
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript