今天学习ajax局部刷新实现分页,遇到了这样的异常
序列化类型为“ajax学习.DataSetComment+T_CommentDataTable”的对象时检测到循环引用。
意思就是说由于该数据类型太复杂,json无法转换该数据类型,现在需要做的是把你要转换的数据以类的对象的方式存储即可解决该问题。
今天把自己的部分代码列出来供大家参考
解决前代码
{
var adapter = new T_CommentTableAdapter();
string pagenum=context.Request["pagenum"]; int iPageNum = Convert.ToInt32(pagenum); var data = adapter.GetPagedData((iPageNum - 1) * 10 + 1,iPageNum * 10);
JavaScriptSerializer jss = new JavaScriptSerializer();//JavaScript序列化对象
context.Response.Write(jss.Serialize(data )); //输出到页面
}
解决后代码
{ var data = adapter.GetPagedData((iPageNum - 1) * 10 + 1, iPageNum * 10); List<Comments> list=new List<Comments> (); foreach(var row in data) { list.Add(new Comments() { Id = (int)row.Id, IP = row.IP, Msg = row.Msg, PostDate = row.PostDate, }); } JavaScriptSerializer jss = new JavaScriptSerializer(); context.Response.Write(jss.Serialize(list)); }
public class Comments
{
public int Id { get; set; }
public string IP{get;set;}
public string Msg{get;set;}
public string PostDate{get;set;}
}