当前位置:编程学习 > JAVA >>

jquery 传值到action 返回list集合

我在jsp页面传一个参数过去到action 在action中怎么返回一个list<>集合 在jsp页面怎么接收遍历 --------------------编程问答-------------------- 这是我的代码
action 代码
public String showDorm() throws IOException{
String sql="select * from tb_stuBasicInfo where dormNo=?";
StuBasicInfoDAO studao=new StuBasicInfoDAO();
System.out.println(dormNo);
List<StuBasicInfo> stuinfoList=(List<StuBasicInfo>)studao.FindSQL(sql,new Object[]{dormNo});
return SUCCESS;
}

jsp ajax:

 <script type="text/javascript">
function showdorm(obj){
var dormNo=obj.value;
alert(dormNo);
$.ajax({
         url:'showDorm.action?dormNo='+dormNo, 
         type:'post',
         dataType:'json', 

}
</script> --------------------编程问答-------------------- 在jsp要传的参数的地方设置name属性(如name=“valList”),然后在Action中定义名字相同的参数(private List<String> valList),生成对应的get/set方法 --------------------编程问答-------------------- gson你可以去http://code.google.com/p/google-gson/ 下载,可以在java object和json相互转换的我觉得还可以比较方便


public class GetJsonAction extends ActionSupport
{

    @Override
    public String execute() throws Exception
    {
        //这里就是你调用业务逻辑从数据库查询到的数据
         //....调用业务逻辑
         List<StuBasicInfo> stuinfoList=(List<StuBasicInfo>)studao.FindSQL(sql,new Object[]{dormNo});
         
        
        Gson gson = new Gson();
         
        //用gson很方便的直接将集合对象转换成json对应字符串格式
         //然后通过response将字符串返回给页面就可以了
         //注意这里return 要是null 不然就会把success对应的页面信息全部给返回了
         //这里和servlet处理ajax请求是一个道理
        String result = gson.toJson(stuinfoList);
        
        HttpServletResponse response = ServletActionContext.getResponse();
        
        response.setContentType("application/json; charset=utf-8");
        response.setHeader("cache-control", "no-cache"); 
        
        PrintWriter out = response.getWriter();
        
        out.print(result);
        
        out.flush();
        out.close();
        
        return null;
    }
}


最后action的配置也不需要配置result
希望对你有帮助 --------------------编程问答--------------------
引用 3 楼  的回复:
gson你可以去http://code.google.com/p/google-gson/ 下载,可以在java object和json相互转换的我觉得还可以比较方便

Java code



public class GetJsonAction extends ActionSupport
{

    @Override
    public String execute(……


ajax那边怎么获取 --------------------编程问答--------------------
引用 3 楼  的回复:
gson你可以去http://code.google.com/p/google-gson/ 下载,可以在java object和json相互转换的我觉得还可以比较方便

Java code



public class GetJsonAction extends ActionSupport
{

    @Override
    public String execute(……

能把ajax那边的代码也给我写一下吗,我都被这个问题头疼 了几天了 --------------------编程问答-------------------- 好的 json中不管是集合对象还是数组对象都是用[]来包含的 ,

建议使用jquery最ajax封装更好的$.post()和$.get()方法,这样做你就不需要去指定dataType的值了
它会根据你服务器端返回的数据类型来接收,
$.post(“showDorm.action”,{dormNo:dormNo},function(returnData){
    //先遍历集合
    for(var i=0;i<returnData.length;i++) {
       var stuBasicInfo = returnData[i];
       //下面就看你集合里面放的对象有哪些属性了
       //例如stuBasicInfo.id 取得对象的id值
       
   }
}); --------------------编程问答-------------------- 最好开始一步一步的调试,先在function(returnData){
 alert(returnData.length);
 看下输出的数字是否是你预期集合的大小
 首先确保服务器端返回的数据没有问题在去做页面的相关操作
 不要全部写完了所有的代码再去执行,本身js就不太好调试
} --------------------编程问答--------------------
引用 6 楼  的回复:
好的 json中不管是集合对象还是数组对象都是用[]来包含的 ,

建议使用jquery最ajax封装更好的$.post()和$.get()方法,这样做你就不需要去指定dataType的值了
它会根据你服务器端返回的数据类型来接收,
$.post(“showDorm.action”,{dormNo:dormNo},function(returnData){
  //先遍历集合
  fo……

为什么我的有属性id,我在下面弹一个alert(stuBasicInfo.id);怎么显示没有你id这个属性值呢 --------------------编程问答--------------------  你在后台将json字符串result打印出来看看,有没的id这个属性, --------------------编程问答--------------------
引用 9 楼  的回复:
你在后台将json字符串result打印出来看看,有没的id这个属性,

打印result没有,只有打印result.toString才有 --------------------编程问答-------------------- 额,打印出来是什么样的? --------------------编程问答--------------------
引用 9 楼  的回复:
你在后台将json字符串result打印出来看看,有没的id这个属性,

使显示id为空或不是对象 --------------------编程问答--------------------
引用 11 楼  的回复:
额,打印出来是什么样的?

[{"id":0,"stuNo":"0809001","password":"0809001","stuName":"王云康","telephone":"13908123456","checkInTime":"09  1 2008 12:00AM","dormNo":"2-102","dormID":1}] --------------------编程问答-------------------- 有id属性哦,0  --------------------编程问答--------------------
引用 14 楼  的回复:
有id属性哦,0

是啊
   //先遍历集合
  for(var i=0;i<returnData.length;i++) {
  var stuBasicInfo = returnData[i];
  alert(stuBasicInfo.id);
    
  }
});
}那个alert那里总是报为空或者是不是对象 --------------------编程问答-------------------- 我测试下应该是没问题的 --------------------编程问答--------------------
引用 16 楼  的回复:
我测试下应该是没问题的
可是我遍历的时候总是出错 --------------------编程问答--------------------
引用 16 楼  的回复:
我测试下应该是没问题的

--------------------编程问答-------------------- 我这边完全没问题啊,你把你action的代码和js代码发我看看 --------------------编程问答-------------------- 图片看不到哦 --------------------编程问答-------------------- js发我看看,你alert数组大小梅问题吧, --------------------编程问答--------------------
引用 20 楼  的回复:
图片看不到哦

 //先遍历集合
  for(var i=0;i<returnData.length;i++) {
  var stuBasicInfo = returnData[i];
  alert(returnData.toString.id);
    
  }
});

就是alert那里报错,id为空或不是对象 --------------------编程问答--------------------
引用 21 楼  的回复:
js发我看看,你alert数组大小梅问题吧,

我弄个错了 是alert(stuBasicInfo.id);这里的时候报错 --------------------编程问答--------------------
引用 21 楼  的回复:
js发我看看,你alert数组大小梅问题吧,

<script type="text/javascript">
function showdorm(obj){
var dormNo=obj.value;
alert(dormNo);
$.post("showDorm.action",{dormNo:dormNo},function(returnData){
alert(returnData.stulist);
  //先遍历集合
  for(var i=0;i<returnData.length;i++) {
  var stuBasicInfo = returnData[i];
  alert(stuBasicInfo.id);
    
  }
});
} --------------------编程问答-------------------- 你alert(returnData.stulist)错了吧,你把这个删除 --------------------编程问答--------------------
引用 25 楼  的回复:
你alert(returnData.stulist)错了吧,你把这个删除

删 了也不对啊,不是这里的问题,到底怎么遍历呢 --------------------编程问答--------------------
引用 25 楼 luobaolin2008 的回复:
你alert(returnData.stulist)错了吧,你把这个删除

在接受的时候要把传过来的值转成对象就ok了
解决了 谢谢你了
--------------------编程问答-------------------- --------------------编程问答-------------------- action中生成list,把这个list生成set/get方法,或者设置进session/request(seesion.put("list",list)),jsp用${#session.list}获取,然后用 <c:forEach>遍历出来就好了 --------------------编程问答-------------------- 是json啊,学习 --------------------编程问答-------------------- --------------------编程问答-------------------- 感觉没那么麻烦吧

action中:
List<StuBasicInfo> stuinfoList = new ArrayList<StuBasicInfo>();//setter getter

public String showDorm() throws IOException{
String sql="select * from tb_stuBasicInfo where dormNo=?";
StuBasicInfoDAO studao=new StuBasicInfoDAO();
System.out.println(dormNo);
stuinfoList=(List<StuBasicInfo>)studao.FindSQL(sql,new Object[]{dormNo});
return SUCCESS;
}


struts.xml


<action name = yourAction >
<result type="json"></result>
</action>


jquery  ajax:

<script type="text/javascript">


function showdorm(obj){
var dormNo=obj.value;
alert(dormNo);
$.ajax({
  url:"showDorm.action",
  data:{
     dormNo : dormNo ,
     
  },
  type:'post',
  dataType:'json',  
  success:function(data) {
       $.each(data.stuinfoList, function(i) {
              //data.stuinfoList 已经是个集合了

     //data.stuinfoList[i].stuName;  相当于实体.属性了
             alert(data.stuinfoList[i].id;);  //相当于打印里面所有的id  这样就打印出来所有了。
}
  }
});
}
</script>
--------------------编程问答--------------------
<script type="text/javascript">


function showdorm(obj){
var dormNo=obj.value;
alert(dormNo);
$.ajax({
  url:"showDorm.action",
  data:{
  dormNo : dormNo ,
    
  },
  type:'post',
  dataType:'json',   
  success:function(data) {
  $.each(data.stuinfoList, function(i) {
  //data.stuinfoList 已经是个集合了

//data.stuinfoList[i].stuName;  相当于实体.属性了
  alert(data.stuinfoList[i].id;); //相当于打印里面所有的id 这样就打印出来所有了。
}
  }
});
}
</script>



嘿嘿 忘了、没贴格式、
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,