`
lujar
  • 浏览: 497383 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

实现基于json的级联菜单

阅读更多

 对于ajax应用来说,把和控件榜定的数据用json来承载,既可以避免频繁调用httprequest,也可以避免xml带来的性能解释。

假设我们要有一个级联菜单,显示用户组以及下面的用户,我们可以这样做

      $group_user = Array();   
      $groups = $db->getAll("select * from $dbutils->group");


      for ($i = 0, $count = count($groups); $i < $count; $i++) {
     
         $users = $db->getAll("select * from $dbutils->user_group ug,$dbutils->user u where ug.user_id = u.user_id and ug.group_id = ".$groups[$i]['group_id']);
         $group_user[$groups[$i]['group_id']]['users'] = $users;
      }


      $json = new JSON(JSON_LOOSE_TYPE);
      $group_user_json_data = $json->encode($group_user);  //将数据从php数组转换成javascript数组
     

     
      $group_user_javascript_data = '<script type="text/javascript">' . "\n"
   . '<!-- // associated javascript data' . "\n"
   . 'var group_user_json_data = '
   . $group_user_json_data . ";\n"
   . '-->' . "\n"
   . '</script>';

 

在模板表单里面

<?php

 echo $group_user_javascript_data;    //把json的数据显示出来
 

?>

<script language="javascript" type="text/javascript" >
 
function addOptions(optionList, optionMenu)
{
 removeOptions(optionMenu);  // clear out the options
 for (var i=0; i < optionList.length; i++) {
  
   optionMenu[i] = new Option(optionList[i].truename, optionList[i].user_id);

  }

}

 

function removeOptions(optionMenu)
{
  len = optionMenu.options.length;
  for (var i=len-1; i >=0 ; i--) {
  
    optionMenu.options[i] = null;

  }

}

 
function change_group() {

  var users = group_user_json_data[document.getElementById('receive_group').value]['users'];//从json里面得到对象

  addOptions(users, document.getElementById('receive_user'))

 
  
}
</script>

 

                                    <tr>
                                      <td width="10%" >接收部门</td>
                                      <td width="80%"><select name="receive_group" onchange="change_group()"><?php echo build_group_select(''); ?></select></td>
                                     </tr> 
                                    <tr>
                                      <td>接收人</td>
                                      <td><select name="receive_user" id="receive_user"></select></td>
                                     </tr>     

分享到:
评论

相关推荐

    Ajax+Json 级联菜单实现代码

    第一个下拉框: 代码如下: &lt;select id=”select” name=”rawfoodBasic.category” onchange=”doChange(this.value... //要3及菜单还可以在次写相应的时间 ”0″&gt;–请选择二级菜单– &lt;/option&gt; &lt;/select&gt; js代

    Ajax实现的三级联动下拉菜单

    struts2+jsp+json+javascript实现的三级下拉菜单,没有service和dao层,数据是虚拟的。需要的欢迎下载。项目直接导入myeclipse就可以使用。访问路径localhost:8080/ajax_day02_hw/proviencecityarea.jsp

    级联下拉菜单:级联表单下拉菜单

    级联下拉菜单jQuery插件,它允许您根据先前的选择来填充一组表单下拉菜单。演示版基本用法要使用该插件而不覆盖任何默认设置,您需要使用多个下拉(选择)菜单创建表单的结构。 在以下示例中,我正在使用&lt;form&gt...

    基于ajax、jquery 通用无限级联菜单

    引用场景: 国家省市级联菜单、任何二级级联菜单、三级菜单、四级菜单、五.... 使用范例:详细参阅District.Selector.js文件 以国家地理信息为例: $(function () { var District1 = new District("userDistrict",{...

    基于jQuery+JSON的省市二三级联动效果

    本文将讲述,利用jQuery插件,通过读取JSON数据,实现无刷新动态下拉省市二(三)级联动效果。 HTML 首先在head中载入jquery库和cityselect插件。 [removed][removed] [removed][removed] 接下来,我们在#city中...

    基于jQuery的控件源码

    基于jQuery的控件源码 1、简简单单右键菜单 一级菜单(每一组菜单)即是一个独立的div容器 每一项又是div,嵌套一个nobr(可用div代替不过要额外写个class)的标签,里面是图标和span包裹的位置内容 2、日期...

    PHP+Ajax网站开发典型实例

    实例61 实现级联菜单的设计 实例62 PHP+Ajax树状菜单 第8章 Ajax数据库操作 实例63 显示数据库系统信息 实例64 实现数据库常见操作 实例65 完成数据库多种查询显示 实例66 数据库记录自动提示 实例67 AjaX...

    jQuery插件cxSelect多级联动下拉菜单实例解析

    cxSelect 是基于 jQuery 的多级联动菜单插件,适用于省市、商品分类等联动菜单。 列表数据通过 AJAX 获取(需要在服务器环境运行),也可以使用变量自定义,数据内容使用 JSON 格式。 提供国内省市县数据(数据来源...

    超实用的jQuery代码段

    8.18 级联AJAX数据异步加载 8.19 取消AJAX异步请求 第9章 jQuery常用算法 9.1 jQuery遍历算法 9.2 jQuery祖先算法 9.3 jQuery后代算法 9.4 jQuery同胞算法 9.5 jQuery过滤算法 9.6 对一个列表进行排序 9.7 实现JSN...

    python入门到高级全栈工程师培训 第3期 附课件代码

    07 recv与recvfrom的区别及基于udp实现ntp服务 08 基于tcp实现远程执行命令 09 基于tcp实现远程执行命令测试结果 10 粘包现象 11 粘包解决方法 第31章 01 上节课复习 02 socketserver实现并发 03 socketserver模块...

    基于jQuery的控件

    Checkbox树(可能是静态树也可能是异步树),用于选择(如选择组织机构,选择数据字典项)等,最好是能够支持节点级联(这个是难点) 能够承载大数据量,并性能表现优异 能够在主流浏览器中运行良好 4、GridView ...

Global site tag (gtag.js) - Google Analytics