struts2 ajax 下拉框联动问题

隔夜_夕梦 2012-10-24 01:34:55
要做一个学院--班级的联动下拉框..从数据库里取值
学院下拉框:
<s:select name="SAcademy" list="academyList" listKey="AId" id="AId" listValue="AName" value="SAcademy" onchange="onchangeShow(this.value)"></s:select>
班级下拉框:
<select name="SClass" id="CId" style="width:160px"></select>

ajax代码:
function onchangeShow(AId){
jQuery.ajax({
url : "docuview/StudentGetComName",
data : {id : AId},
type : "post",
cache : false,
dataType : "json",
success:onchangecallback
});

}
function onchangecallback(data){
document.all['CId'].options.length = 0;
var str="<option value=''>全部</option>";
for(var i=0;i<data.length;i++){
str+="<option value='"+data[i].CId+"'>"+data[i].CName+"</option>" ;
}
$("#CId").html(str);
if("${SClass}"!=''){
for(var i=0;i<data.length;i++){
if(data[i].value=="${SClass}")
document.all['CId'].selectedIndex=i+1;
}
}
}


java代码:
public void GetComName(){
try{
classList = this.aclassDAO.findByAid(id);
System.out.println(classList);
JSONArray jsonObj = JSONArray.fromObject(classList);
sendMsg(jsonObj.toString());

System.out.println(id);
System.out.println("----------------");
}catch(Exception e){
e.printStackTrace();
}
}
public void sendMsg(String content) throws IOException {
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("UTF-8");
response.getWriter().write(content);
}

选择了第一个下拉框后,没有联动第二个下拉框..
上面的System.out.println();是测试打的..
只能输出到System.out.println(classList);
System.out.println(id);System.out.println("----------------");没有输出..
也就是程序到了JSONArray jsonObj = JSONArray.fromObject(classList);没有下去..

各给做过strust2联动下拉框的指导指导...
二级联动怎么做..
若是三级呢??
...全文
376 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我写一个 很详细的,不明白可以问我 http://blog.csdn.net/zhuangchuanao/article/details/8625862
fairyhawk 2012-10-24
  • 打赏
  • 举报
回复
success : function(data) {
}
先把data打印出来看看有没有。

下面是我的用法:
action xml 中配置
<result name="json" type="json">
<param name="root">jsonresult</param>
</result>
jsonresult是在action中定义的一个类
(属性根据自己需要可以定义多个)
如:private String returnMessage;

Action类:
private JsonResult jsonresult =new JsonResult ();
// get set方法记得要写

public String GetComName(){
jsonresult.setReturnMessage("json格式数据");
return "json";
}

js中:
success : function(data) {
alert(data.returnMessage);
}

ld191474639 2012-10-24
  • 打赏
  • 举报
回复
http://blog.csdn.net/ld191474639/article/details/8061716
我写的ajax二级联动,借鉴给你。控制器用的是servlet
隔夜_夕梦 2012-10-24
  • 打赏
  • 举报
回复
天啊...我疯了..可能是ajax脚本问题..但不知怎么改...!!谁有完整的struts2下拉框联动的代码给我看看不!!
有一只柴犬 2012-10-24
  • 打赏
  • 举报
回复
选择了第一个下拉框后,没有联动第二个下拉框.. 可能是你脚本写的有问题,
ajax代码:
function onchangeShow(AId){
jQuery.ajax({
url : "docuview/StudentGetComName",
data : {id : AId},
type : "post",
cache : false,
dataType : "json",
success:onchangecallback(date){
document.all['CId'].options.length = 0;
var str="<option value=''>全部</option>";
for(var i=0;i<data.length;i++){
str+="<option value='"+data[i].CId+"'>"+data[i].CName+"</option>" ;
}
$("#CId").html(str);
if("${SClass}"!=''){
for(var i=0;i<data.length;i++){
if(data[i].value=="${SClass}")
document.all['CId'].selectedIndex=i+1;
}
});
}
jackson_fighting 2012-10-24
  • 打赏
  • 举报
回复
System.out.println(id);System.out.println("----------------");没有输出

对于一次request请求,reponse已经处理你的请求(response.getWriter().write(content);),所以不会输出了

楼主基本思路是对的。
onchangecallback 看下返回的data数据。
隔夜_夕梦 2012-10-24
  • 打赏
  • 举报
回复
顶啊.不太熟悉jquery.ajax..做了一天了..

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧