Struts2+Jquery+json如何实现第二级菜单的加载回填?

发布于 2021-11-21 17:43:11 字数 3196 浏览 451 评论 1

我在页面加载时候加载第一集联动菜单,并且实现了第一及省份菜单的回填(就是默认选中库中该用户的所属省份),但是省份关联的第二级城市菜单是用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

狠疯拽 2021-11-21 18:52:41

能分享一下源代码吗

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文