2011-08-25 10 views
0

EXTJS 3ウィンドウでハイチャートを使用してデータをグラフ化しようとしています。 固定配列のデータではすべて動作しますが、jsonを返すpython cgiから取得したデータをグラフ化する必要があります。 これは、(私はデシベルなどへの接続をスキップし、スライス)のpythonのcgiは私のデータを作成する方法である:ExtJS 3とHighcharts、データロード中のJsonStore問題

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'}, 
         ] 
      }) 
    }); 

次に、ウィンドウとグラフを作成します。 2つの質問があります:第1回は非常にシンプルです。このコードで何が問題になっていますか?放火犯コンソールは言う:

Oがext-すべて-debug.jsとするのが最良、私はしましたデバッグスクリプトの1つの行26042で{

(o.metaData)未定義

です私のHTMLヘッダーに含まれています。 ウィンドウは既に作成されていますが、もちろんそこにはグラフはありません。これはどのエラーですか?私が大きな/ * .... *とコメントする場合/プロキシとストアの作成エラーが消えるので、問題がそこにあるはずです。 EDIT:私はこの問題を解決しました。間違った機能でストアをロードしました.jstore.load()の代わりにjstore.loadData()を使用していました。私のfault..sorry

2番目の質問は:これは、次のコードで、jsonstoreのハイチャートでデータを表示する正しい方法ですか?すべての答えを (それが動作し、おそらくそれはそれを投稿するのに便利ではありません原因私たちは」私は全体のコードを投稿しないで、チャート作成内にある)

      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); 

これは放火犯コンソールがoutput..tooくらいの再帰のですか?どの再帰?私はコード内で再帰関数を使用していません。

答えて

0

dict.__str__ほとんどの場合、正しいjsonが生成されません。 jsonモジュールを使用してください。

例:

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

そしてapplication/jsonContent-Typeヘッダを設定することを忘れない(いくつかのJavaScriptフレームワークは、データを取るために正しい行動を決定するために、ヘッダ値を使用)。

+0

jsonがpython cgiで指定したものが正しいです、私は別のアプリケーション(グリッド)で使用し、すべて正常に動作します。(私は同じプロキシとストアも使用しています。 。) – powder

+0

非常に単純なケースでは '' dict .__ str__''は無効なJSONを生成するので(例えば、値がNoneの場合など)、どんな場合でもjson/simplejsonを使うべきです。ハイチャートの問題については考えていないが、私はJavaScriptのリテラルを使ってデータを読み込んだだけだ。 – codeape

+0

さて、どうもありがとう、私は今jsonについてのいくつかのドキュメントを読むでしょう – powder