Круговая диаграмма с PHP - PullRequest
       7

Круговая диаграмма с PHP

0 голосов
/ 24 февраля 2011

Я попытался добавить загрузку круговой диаграммы динамически, используя Flot Chart и PHP / MySQL.

Это мой код JavaScript

 <script id="source" language="javascript" type="text/javascript">


  function fetchData() {
   $.ajax({
      url:      "test.php",
      method:   "GET",
      dataType: "json",
      success:  function(series) {
         var data = [  series ];
         $.plot($("#graph1"), data, {
            pie: { 
                show: true,
                showLabel: true
            },
            legend: {
                show: false 
            }
        });
      }
   });

   setTimeout(fetchData, 1000);
}


$(function () {
    $("#btn").click(function(){
    fetchData();                       
  });   

});

Это мой код PHP

<?php 
    include("db.php");
    $return_arr = array();
    $sql = mysql_query("SELECT item, COUNT(target) FROM counter WHERE type='video' and date BETWEEN '2011-02-21' and '2011-02-26' GROUP BY target ORDER BY id ASC");
    while($obj = mysql_fetch_object($sql)){
        $return_arr[] = $obj;   
    }
    echo json_encode($return_arr);
?>

Это моя кнопка

<input type="submit" value="click" id="btn"/>

Это массив, который я получаю, когда нажимаю кнопку

[{"item":"Final 2010","COUNT(target)":"2"},{"item":"Semi Final 2009","COUNT(target)":"3"}]

Когда я нажимаю кнопку, выдается эта ошибка:

An invalid or illegal string was specified" code: "12
[Break On This Error] false 

и даже круговая диаграмма не загружается.Может кто-нибудь сказать мне, где я сделал неправильно.

Когда я регистрируюсь в firebug, массив выглядит примерно так

[{"item":"Final 2010","COUNT(target)":"2"},{"item":"Semi Final 2009","COUNT(target)":"3"}]

Но когда я его печатаю, он отображается как [Объект объекта] [Объект объекта], я думаю, что это будетпроблема, кто-нибудь знает как это исправить

спасибо

1 Ответ

0 голосов
/ 24 февраля 2011

Я думаю, вам нужно оценить эти данные (серии)

var data    = eval("(" + series + ")");

Это должно сделать это, я думаю

РЕДАКТИРОВАТЬ

Добавленопростая репликация на jsfiddle: http://jsfiddle.net/TVAWL/1/

...