使用struts2+jquery+ajax生成联动下拉列表框(select)
来源:互联网 发布:pscc mac版下载 编辑:程序博客网 时间:2024/05/18 02:45
有一个这样的需求,用户在填写收货地址的时候,如果用户在第一个下拉列表框选择了“广东省”,我们希望在右边弹出一个下拉列表框,里面可以选择广东省的某个市区,如果用户在市区中选择了“广州市”,我们希望在右边又弹出一个下拉列表框,里面可以选择广州市的某个区。
这种技术可以使用ajax完成。
整体思路是:
页面在加载的时候通过ajax向服务器发送同步请求,服务器返回一个json,页面通过分析这个json先把第一个select的数据填满,然后隐藏第二,三个select,如果用户在第一个select选择了具有子节点的选项,再通过ajax想服务器发送同步请求,页面得到数据后把第二个select填充,再把这个select显示,第三个select使用同样的方法。
首先要知道怎么为一个下拉列表框(select)增加一个选项!
从http://www.w3school.com.cn/htmldom/dom_obj_select.asp得知select 对象有一个add()方法
add()方法定义和用法如下:
add() 方法用于向 <select> 添加一个 <option> 元素。
语法:
selectObject.add(option,before)
参数 描述
option 必需。要添加选项元素。必需是 option 或 optgroup 元素。
before 必需。在选项数组的该元素之前增加新的元素。如果该参数是null,元素添加到选项数组的末尾。
Option 对象代表 HTML 表单中下拉列表中的一个选项。
该对象有下面两个主要属性:
text 设置或返回某个选项的纯文本值。
value 设置或返回被送往服务器的值。
所以我们可以通过下面方法增加一个select 的option
function insertOption() { var y=document.createElement('option'); y.text='Kiwi' var x=document.getElementById("mySelect"); x.add(y,null); }或者通过jquery为一个select增加一个选项
var x = $("#id")[0];//[0]是必须的,原因不明!如果有高手知道,求解! option = new Option(); option.text="abc"; x.add(option,null);
然后我们要知道怎么用ajax向服务器发送请求,jquery为我们包装好一些方法:
$(document).ready(function() {$.ajaxSetup({async:false});var datas;$("#child_type").hide();$.getJSON("getGoodsType.action", function(json) {datas = json;});if (datas == undefined) {alert("no datas");return;}//do something next}
$.ajaxSetup({async:false});这句话是指将默认的异步请求该为同步请求,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
getJSON方法定义如下:
jQuery.getJSON(url,data,success(data,status,xhr))
参数 描述
url 必需。规定将请求发送的哪个 URL。
data 可选。规定连同请求发送到服务器的数据。
success(data,status,xhr) 可选。规定当请求成功时运行的函数。
额外的参数:
data - 包含来自请求的结果数据
status - 包含请求的状态
xhr - 包含 XMLHttpRequest 对象
服务器返回的json被封装在datas变量里面,通过这个变量可以同javascript进行其他操作。
下面介绍如何用strut2的action将json数据返回。
import java.io.PrintWriter;import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;import java.util.LinkedHashMap;import java.util.Map;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.interceptor.ServletResponseAware;import util.JdbcUtils;import util.JsonUtils;import com.opensymphony.xwork2.ActionSupport;public class GetGoodsType extends ActionSupport implements ServletResponseAware {private HttpServletResponse response;private int parentId = 0;@Overridepublic String execute() throws Exception {response.setContentType("application/json;charset=UTF-8");response.setHeader("Cache-Control", "no-cache");PrintWriter pw = response.getWriter();System.out.println("execute方法被执行----------------");System.out.println("parentId=" + this.parentId);Connection conn = JdbcUtils.getConnection();Statement st = conn.createStatement();String sql = "select * from goods_type where parent_id = "+ this.parentId + ";";ResultSet rs = st.executeQuery(sql);Map<String, Object> map = new LinkedHashMap<String, Object>();int typeId;String typeName;while (rs.next()) {typeId = rs.getInt("type_id");typeName = rs.getString("type_name");map.put(typeId + "", typeName);}System.out.println(JsonUtils.toJson(map));pw.write(JsonUtils.toJson(map));pw.flush();pw.close();return null;}public void setParentId(int parentId) {System.out.println("setParentId方法被执行------------------");this.parentId = parentId;}public void setServletResponse(HttpServletResponse response) {this.response = response;}}
JsonUtils是我自己写的一个工具类,当然现在有很多json插件,有专门为struts而做的插件,使用起来很方便。
- 使用struts2+jquery+ajax生成联动下拉列表框(select)
- 发布自制的操作下拉列表框(SELECT)的三个jquery插件(ajax填充、联动、增加选项)
- 发布自制的操作下拉列表框(SELECT)的三个jquery插件(ajax填充、联动、增加选项)
- 自制的操作下拉列表框(SELECT)的三个jquery插件(ajax填充、联动、增加选项)
- AjAx下拉列表框(SELECT)jquery插件
- AjAx下拉列表框(SELECT)jquery插件
- jquery填充select下拉列表,三级联动
- jquery ajax实现下拉列表联动
- JQuery+Ajax实现下拉框联动(省市联动)
- jQuery下拉列表联动
- AJAX示例二(下拉列表联动)
- select下拉列表的联动
- 基于MVC3下拉列表联动(JQuery)
- jquery ajax struts2 级联下拉框 动态生成省市
- JQuery+Struts2实现联动下拉框
- Jquery ajax下拉框联动(用xml存放数据)
- JQuery Ajax三级联动地区下拉框
- JQuery Ajax三级联动地区下拉框
- hdu 4005(双连通)
- hdu 1695 ( “变态” 的欧拉函数 加 容斥原理)
- C#版的MsMultiPartFormData(上传二进流数据到服务器 multipart/form-data)
- C# 如何创建与读写txt文件
- 验证身份证号码
- 使用struts2+jquery+ajax生成联动下拉列表框(select)
- MYSQL数据库 一些语句
- javascript 事件队列加载函数 addLoadEvent
- python输出中文
- VirtualBox上Ubuntu虚拟机auto mount Windows的共享目录
- Linux top命令详解
- WebKit 内核编译
- JAVA线程的交互
- poj1007(DNA Sorting)