1、Action层代码 (dao,Service略 直接虚拟数据)
package cn.hz.lly.action;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import org.apache.struts2.ServletActionContext;
import cn.hz.lly.vo.ProCityCon;
import com.opensymphony.xwork2.ActionSupport;
public class ProAction extends ActionSupport {
private static final long serialVersionUID = -7361997732488681602L;
private String id;
public String listProvince() throws Exception{
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//查询数据
List<ProCityCon> list = new ArrayList<ProCityCon>();
ProCityCon pro0 = new ProCityCon();
pro0.setId("1");
pro0.setName("山西");
ProCityCon pro1 = new ProCityCon();
pro1.setId("2");
pro1.setName("陕西");
ProCityCon pro2 = new ProCityCon();
pro2.setId("3");
pro2.setName("宁夏");
list.add(pro0);
list.add(pro1);
list.add(pro2);
JSONArray jsoArray = JSONArray.fromObject(list);
out.print(jsoArray.toString());
return null;
}
public String listCity() throws Exception{
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//查询数据
List<ProCityCon> list = new ArrayList<ProCityCon>();
ProCityCon pro0 = new ProCityCon();
ProCityCon pro1 = new ProCityCon();
ProCityCon pro2 = new ProCityCon();
ProCityCon pro3 = new ProCityCon();
if("1".equals(id)){
pro0.setId("1");
pro0.setName("太原");
pro1.setId("2");
pro1.setName("大同");
pro2.setId("3");
pro2.setName("吕梁");
}else if("2".equals(id)){
pro0.setId("4");
pro0.setName("西安");
pro1.setId("5");
pro1.setName("咸阳");
pro2.setId("6");
pro2.setName("宝鸡");
pro3.setId("7");
pro3.setName("渭南");
}else if("3".equals(id)){
pro0.setId("8");
pro0.setName("银川");
pro1.setId("9");
pro1.setName("大武口");
}else{
return null;
}
list.add(pro0);
list.add(pro1);
list.add(pro2);
JSONArray jsoArray = JSONArray.fromObject(list);
System.out.println(jsoArray.toString());
out.print(jsoArray.toString());
return null;
}
public String listCounty() throws Exception{
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//查询数据
List<ProCityCon> list = new ArrayList<ProCityCon>();
ProCityCon pro0 = new ProCityCon();
ProCityCon pro1 = new ProCityCon();
if("1".equals(id)){
pro0.setId("1");
pro0.setName("太原市");
pro1.setId("2");
pro1.setName("太原辖区");
}else if("2".equals(id)){
pro0.setId("1");
pro0.setName("大同市");
pro1.setId("2");
pro1.setName("大同辖区");
}else if("3".equals(id)){
pro0.setId("1");
pro0.setName("吕梁市");
pro1.setId("2");
pro1.setName("吕梁辖区");
}else if("4".equals(id)){
pro0.setId("1");
pro0.setName("西安市");
pro1.setId("2");
pro1.setName("西安辖区");
}else if("5".equals(id)){
pro0.setId("1");
pro0.setName("咸阳市");
pro1.setId("2");
pro1.setName("咸阳辖区");
}else if("6".equals(id)){
pro0.setId("1");
pro0.setName("宝鸡市");
pro1.setId("2");
pro1.setName("宝鸡辖区");
}else if("7".equals(id)){
pro0.setId("1");
pro0.setName("渭南市");
pro1.setId("2");
pro1.setName("渭南辖区");
}else if("8".equals(id)){
pro0.setId("1");
pro0.setName("金凤区");
pro1.setId("2");
pro1.setName("西夏区");
}else if("9".equals(id)){
pro0.setId("1");
pro0.setName("大武口市");
pro1.setId("2");
pro1.setName("惠农区");
}
else{
return null;
}
list.add(pro0);
list.add(pro1);
JSONArray jsoArray = JSONArray.fromObject(list);
System.out.println(jsoArray.toString());
out.print(jsoArray.toString());
return null;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
2、jsp 代码
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN" xml:lang="zh-CN">
<head>
<title>jquery菜单联动</title>
<script language="javaScript" src="script/jquery-1.5.1.js"></script>
<script language="javaScript">
$(document).ready(function(){
$.post("listProvince",function(data,textStatus){
var dataObject = eval("("+data+")");
for(var i = 0; i<dataObject.length;i++){
var id = dataObject[i].id;
var name = dataObject[i].name;
$option = $("<option/>");
$option.attr("value",id);
$option.text(name);
$("#province").append($option);
}
});
$("#province").change(function(){
$("#city").attr("length",1);
$("#county").attr("length",1);
var pid = this.value;
$.post("listCity",{"id":pid},function(data,textStatus){
var dataObject = eval("("+data+")");
for(var i = 0; i<dataObject.length;i++){
var id = dataObject[i].id;
var name = dataObject[i].name;
$option = $("<option/>");
$option.attr("value",id);
$option.text(name);
$("#city").append($option);
}
});
});
$("#city").change(function(){
var pid = this.value;
$.post("listCounty",{"id":pid},function(data,textStatus){
var dataObject = eval("("+data+")");
for(var i = 0; i<dataObject.length;i++){
var id = dataObject[i].id;
var name = dataObject[i].name;
$option = $("<option/>");
$option.attr("value",id);
$option.text(name);
$("#county").append($option);
}
});
});
}
);
</script>
</head>
<body>
<div>
<s:fielderror>
</s:fielderror>
</div>
<select id="province" name="province">
<option value="">-请选择...-</option>
</select>
<select id="city" name="city">
<option value="">-请选择...-</option>
</select>
<select id="county" name="county">
<option value="">-请选择...-</option>
</select>
</body>
</html>
说明 :
1、在Action中直接返回页面json格式数据 ,使用jar net.sf.json.JSONArray
pom 中引入次jar后 maven会自动导入其他依赖jar文件
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
2、Action直接将List对象转换成json格式返回
JSONArray jsoArray = JSONArray.fromObject(list);
out.print(jsoArray.toString());
3、页面使用jquery实现ajax调用功能
方法:
$.post("listCity",{"id":pid},function(data,textStatus){
......
}
4、jquery追加至页面
$option = $("<option/>"); //创建option 对象
$option.attr("value",id); //设置属性值
$option.text(name); //设置属性值 使用text() 追加文本方式
$("#county").append($option); //将设置好的option对象追加至id='count' 的下拉框下
5、清除已有的下拉框(保留第一个节点)
$("#city").attr("length",1);
或者使用 $("#city" option[value!='']).remove(); //批量删除已有的value不是' '的下拉选项
分享到:
相关推荐
"jQuery三级地区联动选择菜单jquery-1.9.1.js制作"就是解决此类问题的一个优秀方案。这个项目使用了著名的JavaScript库jQuery,版本为1.9.1,来实现这种功能,确保了良好的浏览器兼容性和执行效率。 jQuery是一个轻...
在demo中,你可以了解到如何设置默认值、限制选择范围,以及如何与其他组件联动。 4. **Dialog**:对话框组件用于弹出窗口,常用于表单提交、信息提示等场景。示例展示了如何打开、关闭、设置大小、位置以及添加...
- 数据绑定:利用 JSON 或 AJAX 动态加载数据到组件中,实现数据与视图的联动。 - 事件监听:通过绑定特定的事件处理器,实现用户交互的响应。 6. **自定义与扩展** - 自定义主题:EasyUI 允许开发者通过 CSS ...
《jQuery-searchableSelect:打造高效带搜索功能的下拉选择器》 在Web开发中,下拉选择框(Select)是常见的用户输入组件,但原生的HTML `<select>` 元素往往功能有限,特别是在大型数据集或需要提供搜索功能的情况...
jquery cxselect联动插件select多级联动下拉菜单 jquery cxselect联动插件select多级联动下拉菜单 jquery cxselect联动插件select多级联动下拉菜单 jquery cxselect联动插件select多级联动下拉菜单
cxSelect 是基于 jQuery 的多级联动菜单插件,适用于省市、商品分类等联动菜单。 列表数据通过 AJAX 获取(需要在服务器环境运行),也可以使用变量自定义,数据内容使用 JSON 格式。
jQuery FillOptions 是一个用于创建多级联动菜单的插件,它能够帮助开发者快速实现下拉菜单之间的级联效果,为用户界面提供更加交互性和动态的选择体验。在网页设计中,这种级联菜单通常用于地区选择、类别导航或者...
jQuery-Citys是一个基于jQuery的省市区三级菜单联动插件,主要用于实现国内行政区划的选择功能。在详细介绍其使用方法之前,我们首先需要了解一些基本概念和数据结构。 1. 国家行政区划代码:中国行政区划代码是...
在这个案例中,"foonav" 很可能是一个定制的 jQuery 插件或脚本,用于实现菜单与页面内容的联动功能。 描述中的 "根据菜单定位到页面响应的内容,相反滚动页面对应菜单选中效果" 表明这个插件或脚本具有以下关键...
6. **Form(表单)**:处理用户输入,支持验证、联动、异步提交等功能。 7. **Tree(树形结构)**:展现层次结构的数据,支持展开/折叠、节点操作等。 **四、jQuery EasyUI 1.3.5 版本更新** 在 1.3.5 版本中,可能...
在网页开发中,"jQuery-实现三级联动效果(省市县)"是一个常见的需求,尤其在构建具有地域选择功能的网站时。这个项目主要是利用jQuery库来实现一个动态的、无刷新的省市县选择器,提高了用户体验,使得用户在选择...
3. 下拉菜单(Combobox):提供了联动下拉、远程加载数据等高级用法,帮助开发者实现复杂的输入控制。 4. 树形控件(Tree):包括基本的树结构展示,以及节点展开、收缩、异步加载等操作。 5. 表单验证(Form ...
- jQuery EasyUI 是基于 jQuery 的轻量级框架,它提供了大量的UI组件,如表格、表单、窗口、菜单、对话框等。 - EasyUI 的目标是通过简单的HTML标记和JavaScript API,帮助开发者快速创建功能丰富的Web应用程序。 ...
7. **插件使用**:jQuery社区有许多插件,如Select2,可以优化下拉菜单的样式和功能,使选择更加友好。如果需要更高级的功能,可以考虑引入这些插件。 在实现过程中,我们需要确保代码的可维护性和性能优化。例如,...
jquery_无限级联菜单,无需ajax,纯json数据调用 简单的调用方式 $.getScript("toregion.js",function(){ var ops = { tree_json:regionConf,//json字符串 tree_json_name:"regionConf",//json字符串变量名称 ...
最后,"Ajax_典型应用_2级联动__城市到部门的 Ajax 实现"涉及到动态下拉菜单的联动。在选择一个城市后,根据所选城市动态加载对应的部门列表。这种联动效果可以通过监听城市选择框的`change`事件,触发Ajax请求,...
通过以上步骤,我们可以构建一个完整的基于jQuery的三级联动下拉菜单。这个“世界级三级联动demo”应该包含完整的HTML、CSS和JavaScript代码,演示了如何将这些概念应用到实际项目中。对于初学者来说,这是一个很好...
开发者可以通过API控制其显示选项、联动其他控件等。 3. **Dialog**:Dialog组件用于创建弹出式窗口,可用于显示信息、用户交互等。API提供了设置对话框大小、位置、按钮、关闭行为等方法。 4. **Menu**:Menu组件...
本教程将深入探讨如何使用jQuery来创建一个响应式的多级联动菜单。 首先,我们需要理解联动菜单的基本原理。联动菜单通常由多个级别组成,每个级别中的选项根据上一级的选择动态改变。例如,一级菜单可能包含“产品...
`jQuery Casecader` 是一个用于构建级联下拉菜单的插件,适用于那些需要多级选择或者联动效果的Web应用。在JavaScript开发中,特别是在前端交互设计中,这种组件非常常见,能够帮助用户通过下拉选项来筛选和导航数据...