首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

struts2 ajax 下拉框联动有关问题

2013-03-26 
struts2 ajax 下拉框联动问题要做一个学院--班级的联动下拉框..从数据库里取值学院下拉框:s:select name

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").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联动下拉框的指导指导...
二级联动怎么做..
若是三级呢??

[解决办法]
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").html(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
[解决办法]
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);
}

热点排行