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
希望对你有帮助 --------------------编程问答--------------------
ajax那边怎么获取 --------------------编程问答--------------------
能把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就不太好调试
} --------------------编程问答--------------------
为什么我的有属性id,我在下面弹一个alert(stuBasicInfo.id);怎么显示没有你id这个属性值呢 --------------------编程问答-------------------- 你在后台将json字符串result打印出来看看,有没的id这个属性, --------------------编程问答--------------------
打印result没有,只有打印result.toString才有 --------------------编程问答-------------------- 额,打印出来是什么样的? --------------------编程问答--------------------
使显示id为空或不是对象 --------------------编程问答--------------------
[{"id":0,"stuNo":"0809001","password":"0809001","stuName":"王云康","telephone":"13908123456","checkInTime":"09 1 2008 12:00AM","dormNo":"2-102","dormID":1}] --------------------编程问答-------------------- 有id属性哦,0 --------------------编程问答--------------------
是啊
//先遍历集合
for(var i=0;i<returnData.length;i++) {
var stuBasicInfo = returnData[i];
alert(stuBasicInfo.id);
}
});
}那个alert那里总是报为空或者是不是对象 --------------------编程问答-------------------- 我测试下应该是没问题的 --------------------编程问答-------------------- 可是我遍历的时候总是出错 --------------------编程问答--------------------
--------------------编程问答-------------------- 我这边完全没问题啊,你把你action的代码和js代码发我看看 --------------------编程问答-------------------- 图片看不到哦 --------------------编程问答-------------------- js发我看看,你alert数组大小梅问题吧, --------------------编程问答--------------------
//先遍历集合
for(var i=0;i<returnData.length;i++) {
var stuBasicInfo = returnData[i];
alert(returnData.toString.id);
}
});
就是alert那里报错,id为空或不是对象 --------------------编程问答--------------------
我弄个错了 是alert(stuBasicInfo.id);这里的时候报错 --------------------编程问答--------------------
<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)错了吧,你把这个删除 --------------------编程问答--------------------
删 了也不对啊,不是这里的问题,到底怎么遍历呢 --------------------编程问答--------------------
在接受的时候要把传过来的值转成对象就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 开发