我的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不会引起任何错误。这个字符串不是很好吗?还是有另一种方法让我的树梢不起作用?非常感谢您提供的任何帮助!
答案 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。