当前位置: 代码迷 >> Java Web开发 >> struts2 ajax 上拉框联动有关问题
  详细解决方案

struts2 ajax 上拉框联动有关问题

热度:2696   发布时间:2013-02-25 21:08:59.0
struts2 ajax 下拉框联动问题
要做一个学院--班级的联动下拉框..从数据库里取值
学院下拉框:
<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")(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联动下拉框的指导指导...
二级联动怎么做..
若是三级呢??


------解决方案--------------------------------------------------------
System.out.println(id);System.out.println("----------------");没有输出

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

楼主基本思路是对的。
onchangecallback 看下返回的data数据。

------解决方案--------------------------------------------------------
选择了第一个下拉框后,没有联动第二个下拉框.. 可能是你脚本写的有问题,
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")(str);
if("${SClass}"!=''){
for(var i=0;i<data.length;i++){
if(data[i].value=="${SClass}")
document.all['CId'].selectedIndex=i+1;

});
}
------解决方案--------------------------------------------------------
http://blog.csdn.net/ld191474639/article/details/8061716
我写的ajax二级联动,借鉴给你。控制器用的是servlet
------解决方案--------------------------------------------------------
  相关解决方案