我正在尝试使用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控制台输出..很多递归?哪个递归?我在我的代码中没有使用任何递归函数..
答案 0 :(得分:0)
dict.__str__
不会产生正确的json。使用json
模块。
示例:
import json
...
req.write(json.dumps(json_root)
请记住将Content-Type
标头设置为application/json
(某些javascript框架使用标头值来确定对数据采取的正确操作)。