ssh项目中ajax与json之二级下拉菜单级联操作
来源:互联网 发布:闪飞网络大师 编辑:程序博客网 时间:2024/05/01 18:27
最近在做一个项目,用到了二级下拉菜单,当你选到一级下拉菜单时,二级菜单会根据一级菜单内容特定显示相关的内容。如图:
这里我首先想到了ajax异步提交,一级菜单id,后台根据Id获取该目录下的二级菜单列表,然后回传前台。思路很清晰,但实施起来却要人老命啊。ajax提交回传单一数据还好,直接就能取值了,但是现在是将List集合存入json中,这足够让我头大,我在网上搜索了大量的这方面的内容,大家写的简直四乱的不要不要的,但是,list存入json的思路却是众口一致,这里我总结了一下,在原有的基础上进行了调整。附上源码:
2.strust2中的action实现方法:
/* * 利用ajax提交后台id,将二级菜单列表存储到json中2017.08.13 miki */public String show()throws Exception{HttpServletResponse response=ServletActionContext.getResponse();if(categoryId>0){System.out.println("父Id为"+categoryId); response.setContentType("text/json"); // 回传内容设为json格式 2017.08.13 miki response.setCharacterEncoding("UTF-8"); /*设置字符集为'UTF-8',不然从数据库取中文数据时显示到前端,会乱码*/ //根据一级菜单选中的Id,得到对应的二级列表menuList=menuService.getMenuListBycategoryId(categoryId);//以jsonArray数据形式存入json中JSONArray menus=JSONArray.fromObject(menuList);/* * response顾名思义就是服务器对浏览器的相应,PrintWriter它的实例就是向前台的JSP页面输出结果 */PrintWriter out=response.getWriter();out.print(menus.toString());out.flush();out.close();}return null;
3.struts.xml文件配置:
<!-- 即使采用json前后台交互,也要定义Comment的Action映射,不然struts拦截器拦截不到 2017.08.08 miki --> <action name="Comment_*" class="miki.action.shop.CommentAction" method="{1}"> </action> <action name="Operate_*" class="miki.action.shop.OperateAction" method="{1}"> </action> <action name="Menu_*" class="miki.action.shop.MenuAction" method="{1}"> </action>
4. jsp中的select选择框:
<li> <label>所属分类:</label> <select id="category" name="source.category.id" class="select category-1" onchange= "change()"> <option value="0">请选择</option> <c:forEach items="${categoryList }" var="category"><option value="${category.id }" ${curCategory.id==category.id?'selected':'' }>${category.name }</option> </c:forEach> </select> <select id="sel_subclass" style="display:" name="source.menu.id"> <option value="0">请选择</option> </select> <em></em> </li>
5.js中获取json中的list,将其遍历显示到页面select选择框中去:
选择一级菜单时,会触发onchange中的change函数,然后将选中的id获取,ajax提交到后台,
//二级菜单显示 miki 2017.08.13 function change() { var categoryId=$("#category").val();//获取select选中的一级菜单id var tbody=window.document.getElementById("sel_subclass");//获取select选择框元素 2017.08.13 miki $.ajax({ type: "post", dataType: "json", url: "Menu_show.action", data: { categoryId:categoryId }, //将categoryId封装到data中success: function (msg) { //自定义function回传函数,msg对应action中的json对象menus if (msg.length>0) { //遍历msg中的数据,将其打印到select的option标签中 var str = ""; for (var key in msg) { str += "<option value="+ msg[key].id+" ${curMenu.id==menu.id?'selected':'' }>" +msg[key].name+ "</option>"; } tbody.innerHTML = str; } }, error: function () { alert("查询失败") } }); }
6. 完美执行,虽然是一个小小的二级菜单级联操作,但是用到了很多知识,同时也让我巩固了ajax方面的技术:
阅读全文
0 0
- ssh项目中ajax与json之二级下拉菜单级联操作
- Java SSH 项目总结——Ajax+Json 级联菜单
- ajax 级联下拉菜单
- AJAX实现二级级联菜单
- struts2 ajax 二级菜单级联
- struts2 ajax 二级菜单级联
- Struts+AJAX级联下拉菜单
- ajax二级联下拉菜单
- ajax三级联下拉菜单
- ajax实现级联下拉菜单
- Jsp+javascript打造二级级联下拉菜单
- Jsp+javascript打造二级级联下拉菜单
- JSP+JavaScript打造二级级联下拉菜单
- Ajax实现下拉框二级级联
- smarty + ajax 实现二级动态级联菜单
- AJAX兑现的二级级联菜单
- 下拉列表 级联菜单操作
- 二级菜单联动 ajax+json
- 28. Implement strStr()
- 快捷键设置
- 关于类加载的一些分析总结
- Jenkins: Change Workspaces and Build Directory Locations
- 5043. 【NOI2017模拟4.4】保持平衡
- ssh项目中ajax与json之二级下拉菜单级联操作
- 51单片机实现时钟
- 15-SpringBoot——Spring MVC基础-服务端推送技术
- 20170813(两道题-dijkstra记录路径 BFS)
- php:布尔值(boolean)数据类型判断
- USACO 2012 Mar Bronze 1.Times 17
- OGNL基础语法和与struts2的结合使用。
- 【二分图匹配入门专题1】K
- PullToRefreshListView