EXT JS 3 TreePanel问题:树未显示

时间:2011-08-24 15:46:07

标签: extjs treepanel

我的TreePanel出现了一个令人讨厌的问题:我使用TreeLoader从网址获取数据。我的面板中正确呈现了一个示例树,因此问题应该出现在自定义数据中。 我通过python cgi获取我的数据,它逐步构建要写入的字符串。 这是TreePanel代码:

var Tree = Ext.tree;

var tree = new Tree.TreePanel({
    useArrows: true,
    autoScroll: true,
    animate: true,
    enableDD: true,
    containerScroll: true,
    border: false,
    // auto create TreeLoader
    dataUrl: '../python/tree/get_tree',

    root: {
        nodeType: 'async',
        text: '369',
    }
});

python cgi写的数据如下:

    [{
    id: 476,
    text: 'memShared',
    leaf: true
},{
    id: 477,
    text: 'icmpInParmProbs',
    leaf: true
},{
    id: 478,
    text: 'memTotalFree',
    leaf: true
},{
    id: 479,
    text: 'icmpOutEchos',
    leaf: true
},{
    id: 480,
    text: 'memAvailReal',
    leaf: true
},{
    id: 481,
    text: 'icmpInAddrMaskReps',
    leaf: true
},{
    id: 482,
    text: 'icmpInRedirects',
    leaf: true
},{
    id: 483,
    text: 'loadavg1',
    leaf: true
},{
    id: 484,
    text: 'tcpCurrEsta',
    leaf: true
},{
    id: 485,
    text: 'icmpInErrors',
    leaf: true
},{
    id: 486,
    text: 'icmpInMsgs',
    leaf: true
},{
    id: 498,
    text: 'icmpInTimeExcds',
    leaf: true
},{
    id: 499,
    text: 'tcpActiveOpens',
    leaf: true
},{
    id: 500,
    text: 'eCpuRawNice',
    leaf: true
},{
    id: 512,
    text: 'icmpOutTimeExcds',
    leaf: true
},{
    id: 513,
    text: 'icmpInEchos',
    leaf: true
},{
    id: 514,
    text: 'memBuffe',
    leaf: true
},{
    id: 515,
    text: 'icmpInSrcQuenchs',
    leaf: true
},{
    id: 516,
    text: 'icmpOutErrors',
    leaf: true
},{
    id: 517,
    text: 'tcpAttemptFails',
    leaf: true
},{
    id: 518,
    text: 'icmpOutAddrMaskReps',
    leaf: true
},{
    id: 519,
    text: 'tcpOutSegs',
    leaf: true
},{
    id: 520,
    text: 'loadavg15',
    leaf: true
},{
    id: 521,
    text: 'tcpRetransSegs',
    leaf: true
},{
    id: 522,
    text: 'tcpEstabResets',
    leaf: true
},{
    id: 523,
    text: 'icmpOutTimestamps',
    leaf: true
},{
    id: 524,
    text: 'memTotalReal',
    leaf: true
},{
    id: 525,
    text: 'icmpOutTimestmpReps',
    leaf: true
},{
    id: 526,
    text: 'icmpOutDestUnreachs',
    leaf: true
},{
    id: 527,
    text: 'tcpPassiveOpens',
    leaf: true
},{
    id: 528,
    text: 'memTotalSwap',
    leaf: true
},{
    id: 529,
    text: 'tcpInSegs',
    leaf: true
},{
    id: 530,
    text: 'icmpOutSrcQuenchs',
    leaf: true
},{
    id: 531,
    text: 'icmpInTimestampReps',
    leaf: true
},{
    id: 532,
    text: 'icmpOutEchoReps',
    leaf: true
},{
    id: 533,
    text: 'tcpOutRsts',
    leaf: true
},{
    id: 534,
    text: 'icmpInAddrMasks',
    leaf: true
},{
    id: 535,
    text: 'memSwapErro',
    leaf: true
},{
    id: 536,
    text: 'eCpuRawIdle',
    leaf: true
},{
    id: 537,
    text: 'eCpuRawKernel',
    leaf: true
},{
    id: 538,
    text: 'memAvailSwap',
    leaf: true
},{
    id: 539,
    text: 'tcpInErrors',
    leaf: true
},{
    id: 540,
    text: 'icmpOutAddrMasks',
    leaf: true
},{
    id: 541,
    text: 'icmpOutRedirects',
    leaf: true
},{
    id: 542,
    text: 'eCpuRawSystem',
    leaf: true
},{
    id: 543,
    text: 'eCpuRawInterrupt',
    leaf: true
},{
    id: 544,
    text: 'icmpOutMsgs',
    leaf: true
},{
    id: 545,
    text: 'icmpInTimestamps',
    leaf: true
},{
    id: 546,
    text: 'icmpInEchoReps',
    leaf: true
},{
    id: 547,
    text: 'eCpuRawWait',
    leaf: true
},{
    id: 548,
    text: 'eCpuRawUse',
    leaf: true
},{
    id: 549,
    text: 'memCached',
    leaf: true
},{
    id: 550,
    text: 'loadavg5',
    leaf: true
},{
    id: 551,
    text: 'icmpInDestUnreachs',
    leaf: true
},{
    id: 552,
    text: 'icmpOutParmProbs',
    leaf: true
},{
id: 501,
text: e,
children: [{
    id: 502,
    text: 'ifInOctets',
    leaf: true
},{
    id: 503,
    text: 'ifOutUcastPkts',
    leaf: true
},{
    id: 504,
    text: 'ifOutNUcastPkts',
    leaf: true
},{
    id: 505,
    text: 'ifInDiscards',
    leaf: true
},{
    id: 506,
    text: 'ifOutDiscards',
    leaf: true
},{
    id: 507,
    text: 'ifInErrors',
    leaf: true
},{
    id: 508,
    text: 'ifOutOctets',
    leaf: true
},{
    id: 509,
    text: 'ifOutErrors',
    leaf: true
},{
    id: 510,
    text: 'ifInUcastpkts',
    leaf: true
},{
    id: 511,
    text: 'ifInNUcastpkts',
    leaf: true
}]},{
    id: 487,
    text: 'dskIndex',
    children: [{
id: 488,
text: '('1',)',
children : [{
    id: 489,
    text: 'ns-dskUsed',
    leaf: true
},{
    id: 490,
    text: 'ns-dskPercent',
    leaf: true
},{
    id: 491,
    text: 'ns-dskAvail',
    leaf: true
},{
    id: 492,
    text: 'ns-dskTotal',
    leaf: true
}]},{
id: 493,
text: '('2',)',
children : [{
    id: 494,
    text: 'ns-dskUsed',
    leaf: true
},{
    id: 495,
    text: 'ns-dskPercent',
    leaf: true
},{
    id: 496,
    text: 'ns-dskAvail',
    leaf: true
},{
    id: 497,
    text: 'ns-dskTotal',
    leaf: true
}]}]}]

我无法弄清问题是什么,括号应该正确平衡,而firebug不会引起任何错误。这个字符串不是很好吗?还是有另一种方法让我的树梢不起作用?非常感谢您提供的任何帮助!

2 个答案:

答案 0 :(得分:1)

在您的数据上运行jsonlint会显示此错误。修复它并再次运行代码。

Parse error on line 2:
[    {        id: 476,        tex
--------------^
Expecting 'STRING', '}

答案 1 :(得分:0)

您是否注意到id为501的节点的text: e,部分? 与id: 488, text: '('1',)'id: 493, text: '('2',)',相同的问题。 这些字符串以不正确的格式传递。修复它们允许ExtJS构建一个树(在本地尝试)。

您要搜索的错误位于eval语句中 - ExtJS尝试在后台评估服务器的响应,但由于json格式不正确而无法执行此操作。

您可以在json.org了解json格式。

从python 2.6开始有一个python json encoder,你可以依赖它来生成json。