Ajax调用中的循环引用错误

时间:2014-02-10 15:36:05

标签: javascript jquery asp.net

在我的网络方法中,我正在动态创建一个表

Public Table Buildtbl
{
Table mytable = new Table();
TableRow th = new TableRow();
TableHeaderCell tc1 = new TableHeaderCell();
tc1.Text = "Header1";

TableHeaderCell tc2 = new TableHeaderCell();
tc2.Text = "Header2";
TableHeaderCell tc3 = new TableHeaderCell();
tc3.Text = "Rheader3";
TableHeaderCell tc4 = new TableHeaderCell();
tc4.Text = "header4";

th.Cells.Add(tc0);
th.Cells.Add(tc1);
th.Cells.Add(tc2);
th.Cells.Add(tc3);
th.Cells.Add(tc4);

mytable.Rows.Add(th)
return mytable.

}

在我的ajax电话中,我打电话如下。

    `$`.ajax({
            type: "POST",
            url: "WebForm1.aspx/Buildtbl",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            success: function (msg) {
                $("#dt2").add(msg.d);
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert(XMLHttpRequest.responseText);
            }
        });

我收到以下错误。

在序列化类型的对象时检测到循环引用 'System.Web.UI.WebControls.TableHeaderRow'。

我尝试在服务器端进行序列化(代码隐藏),如下所示

    var serializer = new JavaScriptSerializer();
    var serializedResult = serializer.Serialize(mytable);

仍然遇到同样的错误。

1 个答案:

答案 0 :(得分:0)

我通过在代码behing中创建HTML表来解决,即使用System.Web.UI.HtmlControls.HtmlTable 而不是System.Web.UI.System.Web.UI.WebControls.Table创建表后,我执行以下步骤

        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        mytable.RenderControl(htw);

并以字符串形式返回。