带有JSON的JsTree卡在加载上

时间:2013-02-28 08:33:59

标签: json jstree

我正在使用JSON来显示JsTree。 JSON通过递归函数构建为字符串。现在我用较小/较不复杂的树进行了一些测试,并让它开始工作。我使用JSONLint检查有效的JSON并最终得到了正确的语法。现在,当我尝试显示预期的大树时,它只是加载了.gif(曾经是因为JSON不正确),但在JSONLint上检查后它是正确的。

可能的原因是什么?我怀疑这棵树可能太大了什么。

递归函数:

public void getViewTree(ref string tree, Int32? id = null)
        {
            var topNodes = (from items in db.AssessmentViewItems
                           select items).Take(1);

            #region getChildren via LINQ
            if (id == null)
            {
                topNodes = from items in db.AssessmentViewItems
                           where items.ParentAssessmentViewItemID == null
                           && items.AssessmentViewID == 17
                           select items;
            }
            else
            {

                topNodes = from items in db.AssessmentViewItems
                           where items.ParentAssessmentViewItemID == id
                           && items.AssessmentViewID == 17
                           select items;
            } 
            #endregion

            int counter = 1;
            int max = (int)topNodes.Count();
            foreach (var node in topNodes)
            {

                if (node.ParentAssessmentViewItemID == null)
                {
                    {\"id\":\"532topNode\",\"selected\":true},\"children\":[null,
                    tree += "{\"data\":\"" + node.Title.Trim().Replace("\"","").Replace("("," ").Replace(":"," ").Replace("-"," ").Replace("&","and").Replace("/"," ").Replace("\\"," ").Replace(","," ").Replace("•", " ") + "\",\"attr\":{\"id\":\"" + node.AssessmentViewItemID + "\", \"selected\":true}, \"children\":[";   

                    getViewTree(ref tree, node.AssessmentViewItemID);
                    tree += "}]";
                    if (counter < max)
                    {
                        tree += "},";
                    }
                }
                else if (node.Type.Equals("Legal Topic"))
                {
                    tree += "{\"data\":\"" + node.Title.Trim().Replace("\"", "").Replace("(", " ").Replace(":", " ").Replace("-", " ").Replace("&", "and").Replace("/", " ").Replace("\\", " ").Replace(",", " ").Replace("•", " ") + "\",\"attr\":{\"id\":\"" + node.AssessmentViewItemID + "\", \"selected\":true}";

                    if (counter < max)
                    {
                        tree += "},";
                    }

                }
                else
                {
                    var topNodes1 = from items in db.AssessmentViewItems
                               where items.ParentAssessmentViewItemID == node.AssessmentViewItemID
                               && items.AssessmentViewID == 17
                               select items;

                    if (topNodes1.Count() > 0)
                    {

                        tree += "{\"data\":\"" + node.Title.Trim().Replace("\"", "").Replace("(", " ").Replace(":", " ").Replace("-", " ").Replace("&", "and").Replace("/", " ").Replace("\\", " ").Replace(",", " ").Replace("•", " ") + "\",\"attr\":{\"id\":\"" + node.AssessmentViewItemID + "\", \"selected\":true}, \"children\":[";
                    }
                    else
                    {
                        tree += "{\"data\":\"" + node.Title.Trim().Replace("\"", "").Replace("(", " ").Replace(":", " ").Replace("-", " ").Replace("&", "and").Replace("/", " ").Replace("\\", " ").Replace(",", " ").Replace("•", " ") + "\",\"attr\":{\"id\":\"" + node.AssessmentViewItemID + "\", \"selected\":true}";
                    }

                    getViewTree(ref tree, node.AssessmentViewItemID);

                    if (topNodes1.Count() > 0)
                    {
                        tree += "}]";
                    }

                    if (counter < max)
                    {
                        tree += "}";
                        tree += ",";
                    }

                }

                counter++;
            }
        }

JS:

$(function () {
    $("#demoTree").jstree({
        "json_data": {
            "data": treeModel
        },
        "plugins": ["themes", "json_data", "ui"],

    });
});

调用递归函数:

string tree = "[";

getViewTree(ref tree);

tree += "}]";

return View("About", "_Layout", tree);

使用Chrome开发者工具后,我从中获得了错误:

Uncaught SyntaxError:意外的令牌ILLEGAL(程序):54 没有提供数据和ajax设置。

我在JSONLint上检查了它的语法。生成小树没有那2个错误

1 个答案:

答案 0 :(得分:2)

使用DevExpress树解决了问题。完全相同的JSON字符串。