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 相关文章推荐
基于PHP+Jquery制作的可编辑的表格的代码
Apr 10 Javascript
script标签属性type与language使用选择
Dec 02 Javascript
jQuery的end()方法使用详解
Jul 15 Javascript
仅30行代码实现Javascript中的MVC
Feb 15 Javascript
利用css+原生js制作简单的钟表
Apr 07 Javascript
Javascript6中字符串的四个新用法分享
Sep 11 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
Dec 16 Javascript
JavaScript在控件上添加倒计时功能的实现代码
Jul 04 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
Sep 20 Javascript
vue.js语法及常用指令
Oct 29 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
May 28 Javascript
vue中keep-alive组件的入门使用教程
Jun 06 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 遍历XP文件夹下所有文件
2008/11/27 PHP
通过php添加xml文档内容的方法
2015/01/23 PHP
php中return的用法实例分析
2015/02/28 PHP
让你的PHP7更快之Hugepage用法分析
2016/05/31 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
2017/02/18 PHP
PHP实现数据四舍五入的方法小结【4种方法】
2019/03/27 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
用js计算页面执行时间的函数
2006/12/07 Javascript
利用ASP发送和接收XML数据的处理方法与代码
2007/11/13 Javascript
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
2012/10/11 Javascript
JavaScript起点(严格模式深度了解)
2013/01/28 Javascript
js call方法详细介绍(js 的继承)
2013/11/18 Javascript
JavaScript实现身份证验证代码
2016/02/17 Javascript
简单谈谈ES6的六个小特性
2016/11/18 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
2017/03/21 jQuery
vue-router路由参数刷新消失的问题解决方法
2017/06/17 Javascript
基于模板引擎Jade的应用(详解)
2017/12/12 Javascript
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
2018/07/26 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
微信小程序实现卡片左右滑动效果的示例代码
2019/05/01 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
2018/07/13 Python
python使用opencv对图像mask处理的方法
2019/07/05 Python
Python脚本操作Excel实现批量替换功能
2019/11/20 Python
python实现图片横向和纵向拼接
2020/03/05 Python
详解Python设计模式之策略模式
2020/06/15 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
python自动化测试三部曲之request+django实现接口测试
2020/10/07 Python
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
巴基斯坦电子产品购物网站:Home Shopping
2017/09/14 全球购物
大学新生军训方案
2014/05/03 职场文书
开业庆典活动策划方案
2014/09/21 职场文书
接待员岗位职责范本
2015/04/15 职场文书
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android