jsp中使用ajax返回json数据错误

zxlshiep 2011-04-10 08:55:36
struts2的action代码如下:
package ajaxaction;

import java.util.ArrayList;
import java.util.List;
import po.Weeks;
import service.Weeksservice;
import org.apache.struts2.json.annotations.JSON;
import action.Action;

public class Showweekaction implements Action {
private String username;
private String date;
private Weeksservice ws;
private List<Weeks> weekslist;


public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getDate() {
return date;
}

public void setDate(String date) {
this.date = date;
}
@JSON(serialize=false)
public Weeksservice getWs() {
return ws;
}

public void setWs(Weeksservice ws) {
this.ws = ws;
}

@JSON(serialize=false)
public List<Weeks> getWeekslist() {
return weekslist;
}
public void setWeekslist(List<Weeks> weekslist) {
this.weekslist = weekslist;
}

public String execute() {
weekslist=new ArrayList<Weeks>();
weekslist=ws.getweek(username,date);
System.out.print(weekslist.size());
return SUCCESS;
}
}
jsp中javascript如下:
function fun(){
$.ajax({
url:"ajaxshowweek",
data:{username:"zxl",date:"2011-04-06"},
type:'post',
dataType:'json',
success:function(data){
var jsonobject=data.weekslist;
$.each(jsonobject,function(key,value){
alert(key+" "+value.event);
})
},
error:function(){
alert("失败");
}
});
}
struts.xml:
<package name="ajaxaction" extends="json-default">
<action name="ajaxshowweek" class="ajaxaction.Showweekaction">
<result type="json"/>
</action>
</package>
我在控制台里查了一下weekslist的长度为2,说明它不为空。(weekslist是从数据库里取出来的,ws是业务逻辑还有dao层)但是在js里用each遍历什么也没有输出……
我还想问一下这个serialize(序列化)到底是干什么的,就是变成{key:value}模式?
我要崩溃了,这个问题已经困扰我三四天了,网上查了很多就是没解决各位大虾帮帮忙……
...全文
1686 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingqiulu 2012-12-04
  • 打赏
  • 举报
回复
awusoft 2011-04-12
  • 打赏
  • 举报
回复
使用简单的ajax来访问试试吧,先不用jquery的,看看返回的结果是什么内容,我估计是内容出错了.
司马喂羊 2011-04-11
  • 打赏
  • 举报
回复
如果在页面alter(data.weeklist.length)没值的话,你action中return JSON试试
mysky191_chi 2011-04-11
  • 打赏
  • 举报
回复
试试
Ext.util.JSON.decode(data.responseText);
alert(data.weeklist);
  • 打赏
  • 举报
回复

public String execute() {
weekslist=new ArrayList<Weeks>();
weekslist=ws.getweek(username,date);
System.out.print(weekslist.size());
return SUCCESS;
}}

struts2 不太懂,不知道你这里怎么返回数据的。在servlet中 都使用 response.getWriter().print(data);
这样前台就能获取到打印的这个data.
zxlshiep 2011-04-11
  • 打赏
  • 举报
回复
我在$.ajax{}的success:function(data){}里用$("#show").html(data)结果什么也没有输出,然后用了5楼给我的建议将$("#show").html(data)换成alert(data)之后弹出来的依次为[object Object]只有估计执行到$.each()弹出date undefined和username undefined。这下我真的乱了怎么办?
  • 打赏
  • 举报
回复
data里面为空啊。
你貌似没返回数据,你怎么获取得到值?
xf_taoran 2011-04-11
  • 打赏
  • 举报
回复
tubage408 2011-04-11
  • 打赏
  • 举报
回复
var jsonobject=data;试试
hepeng_8 2011-04-11
  • 打赏
  • 举报
回复
你i用的是注解吗
  • 打赏
  • 举报
回复
我咋觉得是var jsonobject=data;呢。你alert(data);看看呢。
zxlshiep 2011-04-11
  • 打赏
  • 举报
回复
我的hibernate里pojo类中序列化了比如我的weeks类implements java.io.Serializable
ws是业务逻辑里面没有属性只有一个函数调用了weeksdao里面的一个函数,而weeksdao里面的weeks函数就是hql语句取数据返回为list类
韭菜猫骑士 2011-04-11
  • 打赏
  • 举报
回复
通过
weekslist=ws.getweek(username,date);
可以估计你是在
ws
中用HashMap完成的序列化
jeky_zhang2013 2011-04-10
  • 打赏
  • 举报
回复
你这里的data返回的是什么你清楚吗?你怎么知道里面就有你要的weeklist,应该是没有传到ajax
awusoft 2011-04-10
  • 打赏
  • 举报
回复
弹整个Ajax的内容啊.看看是不是符合json格式的.
看看是不是data.responseText
zxlshiep 2011-04-10
  • 打赏
  • 举报
回复
data.weekslist我测试过
if(jsonobject==null)
alert("sad");
结果就是弹出来个sad……
不过我想了想是不是用
if(jsonobject){
alert("sad");
}
是不是更好点。
awusoft 2011-04-10
  • 打赏
  • 举报
回复
你先用JS测试一下 var jsonobject=data.weekslist;
看看里边返回的内容啊.

81,092

社区成员

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

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