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 相关文章推荐
使用Math.floor与Math.random取随机整数的方法详解
May 07 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
Jun 22 Javascript
jquery实现顶部向右伸缩的导航区域代码
Sep 02 Javascript
JS 对象(Object)和字符串(String)互转方法
May 20 Javascript
微信小程序中用WebStorm使用LESS
Mar 08 Javascript
Angularjs2不同组件间的通信实例代码
May 06 Javascript
AngularJS中下拉框的基本用法示例
Oct 11 Javascript
webpack实现一个行内样式px转vw的loader示例
Sep 13 Javascript
详解在React项目中安装并使用Less(用法总结)
Mar 18 Javascript
浅谈redux, koa, express 中间件实现对比解析
May 23 Javascript
ES6之Proxy的get方法详解
Oct 11 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
Aug 13 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自动适应范围的分页代码
2008/08/05 PHP
rrmdir php中递归删除目录及目录下的文件
2011/05/15 PHP
PHP的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
php实现的一段简单概率相关代码
2016/05/30 PHP
浅谈php中变量的数据类型判断函数
2017/03/04 PHP
Extjs学习笔记之六 面版
2010/01/08 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
js密码强度实时检测代码
2016/03/02 Javascript
JS实现仿PS的调色板效果完整实例
2016/12/21 Javascript
JS跨域请求外部服务器的资源
2017/02/06 Javascript
如何编写jquery插件
2017/03/29 jQuery
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
微信小程序实现折叠面板
2018/01/31 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
Vue实现验证码功能
2019/12/03 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
[53:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第三场 6.2
2018/06/03 DOTA
浅谈python str.format与制表符\t关于中文对齐的细节问题
2019/01/14 Python
python使用Plotly绘图工具绘制散点图、线形图
2019/04/02 Python
Python API自动化框架总结
2019/11/12 Python
财务会计专业应届毕业生求职信
2013/10/18 职场文书
中专毕业生个人职业生涯规划
2014/02/19 职场文书
美术毕业生求职信
2014/02/25 职场文书
另类冲刺标语
2014/06/24 职场文书
会计专业毕业生自荐书
2014/06/25 职场文书
计算机毕业大学生求职信
2014/06/26 职场文书
出纳工作检讨书范文
2014/12/27 职场文书
给老婆的保证书
2015/01/16 职场文书
幼师小班个人总结
2015/02/12 职场文书
2019年特色火锅店的创业计划书模板
2019/08/28 职场文书
导游词之江苏同里古镇
2019/11/18 职场文书
PHP中->和=>的意思
2021/03/31 PHP
nginx之queue的具体使用
2022/06/28 Servers