Как передать JSON в jqChart? - PullRequest
0 голосов
/ 19 января 2012

Клиентская сторона отправляет почтовый запрос php на серверной стороне. Php возвращает JSON клиенту. Пример:

[[ "1", "- 1"], [ "2", "0"], [ "3", "0"], [ "4", "0"], [ "5", "4"], [ "6", "5"], [ "7", "3"]]

Теперь со стороны клиента я должен создать диаграмму. Я создал диаграмму с помощью плагина jQuery jqPlot и Flot, но jqChart не отображается правильно. Вот код jQuery:

            if ($jqlib == "flot") {
                var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];
                $.post('database2json.php', function(data){
                    $.plot($("#placeholder"), [d2, data]);
                },
                'json'
                );
            } else if ($jqlib == "jqchart") {
                $.post('database2json.php', function(podaci){
                    $('#placeholder').jqChart({
                        title: { text: 'Chart Title'},
                        series: [
                            {
                                type: 'line',
                                data: podaci
                            }
                        ]
                    });
                });
            }

С этим кодом Flot рисует график с линией, а jqChart рисует график, но нет линии, это пустой график.

Как решить эту проблему?

EDIT1: Вот снимок экрана с выводом jqChart: enter image description here

На оси x он рисует от 1 до 31, как и ожидалось, также на оси y все в порядке, но линии нет.

EDIT2: @DraganMatek, упомянул, что jqChart принимает парные значения [x, y], где x - это строка, дата или число, а y - это число.

В базе данных есть оба столбца с типом int.

PHP-код на стороне сервера, для извлечения этих данных:

$result = mysql_query("select Dan, Temperatura from TEMPERATURA");
        $niz = array();
    while ($row = mysql_fetch_array($result)) {
                $niz[] = array($row['Dan'], $row['Temperatura']);  
    }

        $obj = json_encode($niz);
        echo $obj;

Я не понимаю, почему это строки x и y после отправки как json. Может быть, я мог бы разобрать это на стороне клиента?

EDIT3: я проверил с помощью Firebug, что на стороне клиента я получаю это:

[[ "1", "- 1"], [ "2", "0"], [ "3", "0"], [ "4", "0"], [ "5", "4"], [ "6", "5"], [ "7", "3"], [ "8", "2"], [ "9", "2"], [ "10", "1"], [ "11", "- 2"], [ "12", "- 2"], [ "13", "0"], [ "14", "1"], [ "15 », "- 2"], [ "16", "- 1"], [ "17", "- 1"], [ "18", "- 2"], [ "19", "- 1" ], [ "20", "3"], [ "21", "- 1"], [ "22", "0"], [ "23", "1"], [ "24", "3 "], [" 25" , "1"], [ "26", "1"], [ "27", "- 1"], [ "28", "- 1"], [ "29", "4"], [ "30", "5"], [ "31", "5"]]

Почему так? В базе данных есть два целых числа.

Ответы [ 2 ]

2 голосов
/ 19 января 2012

Кажется, что jqChart нуждается в int в качестве элементов массива и не может работать со строками. Обновлен код, указанный ниже.

$.post('database2json.php', function(podaci){
    $.each( podaci, function(i, e) {
        podaci[i][0] = parseInt(e[0]);
        podaci[i][1] = parseInt(e[1]);
    });

    $('#placeholder').jqChart({
        title: { text: 'Chart Title'},
        series: [
            {
                type: 'line',
                data: podaci
            }
        ]
    });
});
1 голос
/ 19 января 2012

Данные jqChart должны быть в формате: ["1", -1] вместо ["1", "-1"].

Второе значение должно быть числовым.

Вы также можете проверить документацию: Линейный график jqChart

...