ExtJS 3和Highcharts,JsonStore在加载数据时出现问题

时间:2011-08-25 10:19:56

标签: python json extjs highcharts

我正在尝试使用EXTJS 3窗口中的Highcharts来绘制一些数据。 使用固定数据数据一切正常但我需要绘制从python cgi中获取的数据,该数据返回一个json。 这就是python cgi如何创建我的数据(一片,我跳过了与db的连接等等):

    query = "select timestamp, value from "+measure_table+" where id_resource = 280 and timestamp < '2011-07-13 03:59:00'"
    #execute the query
    cur.execute(query)
    rows = cur.fetchall()

    #create the empty json data rpeository to be filled in
    json_root = { 'fields': ['timestamp', 'value'], 'data':[] }

    for row in rows:
            json_root['data'].append({'timestamp':str(row[0]), 'value':row[1]})

    #spit out the json and we are done!
    req.write(str(json_root))

这是我试图加载这些数据的js:

        var jproxy = new Ext.data.HttpProxy({
            url: 'the url where to find the cgi'
    });
    var jstore = new Ext.data.Store({
            proxy: jproxy,
            reader: new Ext.data.JsonReader({
                    idProperty: 'timestamp',
                    root: 'data',

                    fields: [
                            {name: 'timestamp', mapping: 'timestamp'},
                            {name: 'value', mapping: 'value'},
                        ]
            })
    });

然后我创建窗口和图表。 现在有两个问题:第一个问题很简单:这段代码出了什么问题? firebug控制台说:

  

o未定义

     

if(o.metaData){

在ext-all-debug.js的第26042行,我的html标题中包含的调试脚本之一。 窗口已经创建,但当然没有图表。这是哪种错误?如果我用一个大的/ * .... * /代理的创建和存储错误消失,所以问题应该在那里。 编辑:我已经解决了这个问题,我用错误的函数加载了商店..我正在使用jstore.loadData()而不是jstore.load(),我的错...发送

第二个问题是:这是(以下代码)使用jsonstore中的highcharts来绘制数据的正确方法吗? (我们在图表创建中,我不发布整个代码'因为它起作用,并且发布它可能没有用)

                            xField: 'timestamp',
                            store: jstore,
                            series: [{
                                    yField: 'value'
                            }]
    }

非常感谢你的回答!

编辑:我修复了数据加载后的新问题:

too much recursion
jqextend(),DanaI...xtjs.js (riga 81)
merge(),DanaI...xtjs.js (riga 92)
Chart (),DanaI....src.js (riga 3922)
options = Object { chart={...}, title={...}, altri elementi...}
callback = undefined
draw(),DanaI...hart.js (riga 229)
call(),DanaI...ebug.js (riga 1547)
, copy); 

这是firebug控制台输出..很多递归?哪个递归?我在我的代码中没有使用任何递归函数..

1 个答案:

答案 0 :(得分:0)

在大多数情况下,

dict.__str__不会产生正确的json。使用json模块。

示例:

import json
...
req.write(json.dumps(json_root)

请记住将Content-Type标头设置为application/json(某些javascript框架使用标头值来确定对数据采取的正确操作)。