ExtJS 3 и Highcharts, проблема JsonStore при загрузке данных - PullRequest
0 голосов
/ 25 августа 2011

Я пытаюсь отобразить некоторые данные, используя Highcharts в окне EXTJS 3. С фиксированным массивом данных все работает, но мне нужно отобразить данные, взятые из Python CGI, который возвращает JSON. Вот как Python CGI создает мои данные (часть, я пропустил соединение с БД и т. Д.):

    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-й довольно прост: что не так с этим кодом? Консоль Firebug говорит:

о не определено

if (o.metaData) {

в строке 26042 файла ext-all-debug.js, одного из сценариев отладки, которые я включил в свой заголовок html. Окно уже создано, но, конечно, в нем нет графика. Что это за ошибка? если я прокомментирую с большим / * .... * / созданием прокси и хранилища, ошибка исчезнет, ​​поэтому проблема должна быть. РЕДАКТИРОВАТЬ: я исправил эту самую проблему, я загрузил магазин с неправильной функцией .. я использовал jstore.loadData () вместо jstore.load (), моя ошибка .. извините

Второй вопрос: является ли это (следующий код) правильным способом составления диаграммы данных с помощью старших графиков из 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); 

Это вывод консоли firebug .. слишком много рекурсии? какая рекурсия? Я не использую никакую рекурсивную функцию в своем коде ..

1 Ответ

0 голосов
/ 25 августа 2011

dict.__str__ в большинстве случаев не даст правильный JSON. Используйте модуль json.

Пример:

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

И не забудьте установить для заголовка Content-Type значение application/json (некоторые платформы javascript используют значение заголовка для определения правильного действия с данными).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...