日期:2014-05-17  浏览次数:20729 次

jsp中使用ajax返回json数据错误
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}模式?
   我要崩溃了,这个问题已经困扰我三四天了,网上查了很多就是没解决各位大虾帮帮忙……
------解决方案--------------------
你先用JS测试一下 var jsonobject=data.weekslist;
看看里边返回的内容啊.
------解决方案--------------------
data.weekslist我测试过
     if(jsonobject==null)
        alert("sad");
结果就是弹出来个sad……
     不过我想了想是不是用
     if(jsonobject){
        alert("sad");
    }
是不是更好点。
------解决方案--------------------
弹整个Ajax的内容啊.看看是不是符合json格式的.
看看是不是data.responseText
------解决方案--------------------
你这里的data返回的是什么你清楚吗?你怎么知道里面就有你要的weeklist,应该是没有传到ajax
------解决方案--------------------