您的位置:首页 > Web前端 > JQuery

jquery的ajax实现二级联动

2014-07-20 10:05 316 查看
使用了struts2的JSON插件,action中把对象数组放入栈顶,该JSON插件自动将该对象数组转成JSON数组;接着,在JSP页面利用Ajax取JSON数组,实现二级联动的效果。

(1)页面效果:


(2)操作步骤:

第一步:引入struts整合json的插件包

第二步:在struts.xml中定义:

修改:

<package name="system"namespace="/system" extends="struts-default">

修改成

<package name="system"namespace="/system" extends="json-default">

在Action中添加:

<!--默认将栈顶的对象,转换成json对象,如果栈顶是一个集合,转换成json数组
-->

<result name="findJctUnit"type="json"></result>

第三步:页面使用jquery的ajax调用二级联动的js
//ajax的二级联动,使用选择的所属单位,查询该所属单位下对应的单位名称列表

functionfindJctUnit(o){

//货物所属单位的文本内容

var jct =$(o).find("option:selected").text();
$.post("elecUserAction_findJctUnit.do",{"jctID":jct},function(data,textStatus){   //一句代码就搞定

//先删除单位名称的下拉菜单,但是请选择要留下

$("#jctUnitID option").remove();
if(data!=null &&data.length>0){
for(var i=0;i<data.length;i++){
varddlCode = data[i].ddlCode;
var ddlName = data[i].ddlName;

//添加到单位名称的下拉菜单中
var$option = $("<option></option>");
$option.attr("value",ddlCode);
$option.text(ddlName);
$("#jctUnitID").append($option);                    }

}
});
}


第四步:在Action中定义,这里要将返回的List集合放置到栈顶,struts2将其转换成json数据:例如:
public String findJctUnit(){
//1: 获取所属单位选中的上海的文本的值
String jctID = elecUser.getJctID();
//2: 将所属单位文本的值作为条件,查询数据字典,返回List<ElecSystemDDL>
List<ElecSystemDDL> list = elecSystemDDLService.findSystemDDLListByKeyword(jctID);
//3: 将List<ElecSystemDDL>压入栈顶
ValueStackUtils.setValueStack(list);
return "findJctUnit";
}


上面的操作,将栈顶中封装的List集合,其中List集合中的对象所有的属性全部被json化。

总结:将List中存放的对象中的所有属性全部被json化,如果想针对某个属性被json化

此时可以修改struts.xml文件:

添加:

<!--默认将栈顶的对象,转换成json对象,如果栈顶是一个集合,转换成json数组
-->

<resultname="findJctUnit" type="json">

<paramname="includeProperties">\[\d+\]\.ddlCode,\[\d+\]\.ddlName</param>

</result>










内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: