Struts2+Jquery+json如何实现第二级菜单的加载回填?
我在页面加载时候加载第一集联动菜单,并且实现了第一及省份菜单的回填(就是默认选中库中该用户的所属省份),但是省份关联的第二级城市菜单是用Jquery.post()实现联动的,这个怎么实现回填呢,比如说我页面加载的时候实现了回填 吉林,那长春城市怎么回填出来?
js代码:
<!-- 导入jquey库文件 --> <script type="text/javascript" src="js/jquery-1.3.1.js"></script> <script type="text/javascript"> //使用Ajax结合Jquery+后台Json 实现联动菜单 //使用Jquery进行Ajax代码的简化 function showCity(province){ //4个参数类型分别为:提交路径,传递的参数,回调函数,返回数据类型 $.post("<%=basePath%>pages/user!showCity.action",{"user.province":province},showCityCallback,"json"); } //回调函数,Jquery会自动将结果转换为对象,并传递到回调函数中。 function showCityCallback(obj){ //按Id查询页面元素 var city=$("#city"); //设置属性,每次改变时清空在显示 city.attr("length",1); for(var i=0;i<obj.allCity.length;i++){ var cid=obj.allCity[i].cid; var cname=obj.allCity[i].cname; //添加子节点 var option="<option value='"+cid+"'>"+cname+"</option>"; city.append(option); } } </script>
页面显示
<!-- 加载的时候调出回填省份的联动菜单 --> <body onload="showCity(${user.province})">
下拉列表显示
<select id="province" name="user.province" onchange="showCity(this.value);"> <option value="0">-请选择省份-</option> <c:if test="${allProvince!=null}"> <c:forEach var="province" items="${allProvince}"> <c:if test="${user.province==province.pid}"> <option value="${province.pid}" selected="selected">${province.pname}</option> </c:if> <c:if test="${user.province!=province.pid}"> <option value="${province.pid}" >${province.pname}</option> </c:if> </c:forEach> </c:if> </select> <select id="city" name="user.city"> <option value="${user.city}">-请选择城市-</option> </select>
后台Action
public String showCity()throws Exception{ List<City> allCity=provinceService.findCityByPid(user.getProvince()); //使用org.Json来拼写字符串 JSONObject root=new JSONObject(); //定义 JSONArray array=new JSONArray(); //迭代循环将每个对象obj放入数组array Iterator<City> iter=allCity.iterator(); while (iter.hasNext()) { City city=iter.next(); JSONObject obj=new JSONObject(); obj.put("cid", city.getCid()); obj.put("cname", city.getCname()); array.put(obj); } //将array数组放入节点root对象中返回给Ajax调用 root.put("allCity", array); HttpServletResponse response=ServletActionContext.getResponse(); //取得response对象 response.setCharacterEncoding("GBK"); response.setContentType("text/html"); PrintWriter out=response.getWriter(); out.print(root.toString()); out.close(); return null; }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
能分享一下源代码吗