2011-08-25 3 views
0

EXTJS 3 창에서 하이 차트를 사용하여 일부 데이터를 차트로 표시하려고합니다. 고정 된 데이터 배열을 사용하면 모든 작업을 수행 할 수 있지만 json을 반환하는 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입니다 : 파이썬 CGI 내 데이터 생성 방법 이 (조각 내가는 DB에 대한 연결을 생략 등)입니다

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

그런 다음 창과 차트를 만듭니다. 두 가지 질문이 있습니다. 첫 번째 질문은 매우 간단합니다.이 코드의 문제점은 무엇입니까? 불을 지르고 콘솔은 말한다 :

O가

를 정의되어 있지 않으면 (o.metaData) {EXT-모든 debug.js의 라인 26042에서

, 내가했습니다 디버그 스크립트 중 하나 내 HTML 헤더에 포함되어 있습니다. 창이 이미 생성되었지만 여기에는 차트가 없습니다. 어떤 오류가 있습니까? 내가 큰/* .... */프록시 및 스토어의 생성 오류가 사라지면, 그래서 문제가 거기에 있어야 코멘트. 편집 : 나는이 문제를 해결했습니다. 잘못된 기능으로 저장소를로드했습니다 .jstore.load() 대신 jstore.loadData()를 사용했습니다. 내 fault..sorry

두 번째 질문은 다음과 같습니다. :이 코드 (다음 코드)가 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 헤더를 설정하는 기억 (일부 자바 스크립트 프레임 워크는 데이터를 가지고 올바른 조치를 결정하기 위해 헤더 값을 사용).

+0

파이썬 CGI에 의해 주어진 JSON은 정확합니다. 다른 응용 프로그램 (그리드)에서 사용하고 모든 것이 올바르게 작동합니다. (동일한 프록시 및 저장소도 사용하므로 문제가 무엇인지 알 수 없습니다. .) – powder

+0

아주 단순한 경우에''dict .__ str__''은 유효하지 않은 JSON을 생성 할 것이므로 (예를 들어, 값이 None 인 경우) json/simplejson을 사용해야합니다. 하이 차트 문제에 관해서는 알지 못하지만, 자바 스크립트 리터럴을 사용하여 데이터를로드했습니다. – codeape

+0

그래, 고마워, 지금 json에 관한 몇 가지 문서를 읽을거야. – powder

관련 문제