2

I'm not really good at English sorry.

I don't know how to pass values to jqplot application.

the php webpage shows [{"PER":"23"},{"PER":"47"},{"PER":"86"},{"PER":"25"},{"PER":"74"}] which came from mysql server.

the table has one column and values are 23, 47, 86, 25, 74

this is the php code.

<?php
mysql_connect("localhost","root","autoset");
mysql_select_db("test");

$q=mysql_query("SELECT PER FROM Evaluation");
while($e=mysql_fetch_assoc($q))
    $output[]=$e;

print(json_encode($output)); 

mysql_close();

?>

this is html sample file.

       $(document).ready(function(){
        
        var ajaxDataRenderer = function(url, plot) {
            var ret = null;
            $.ajax({
                // have to use synchronous here, else returns before data is fetched
                async: false,
                url: url,
                dataType:'json',
                success: function(data) {
                    ret = data;
                }
            });
            return ret;
        };
     
        var jsonurl ="http://127.0.0.1/index.php"; //"../report/jsondata.txt";

        plot1 = $.jqplot("chart2", jsonurl, {
            title: 'AJAX JSON Data Renderer',
            dataRenderer: ajaxDataRenderer,
    
            animate: true,
            animateReplot: true,
            cursor: {
              show: true,
              zoom: true,
              looseZoom: true,
              showTooltip: false,
 
            },
            series:[   
              {
                label:'a',
                color: '#FF0000',
                rendererOptions: {
                  animation: {
                    speed: 2000
                  }
                }
              },
              {
                  label:'b',
                  color: '#0000FF',
                  rendererOptions: {
                    animation: {
                      speed: 2000
                    }
                  }
                }
            ],
            
            
            axesDefaults: {
              pad: 0
            },
            axes: {
              xaxis: {
                label: "Period",
                renderer: $.jqplot.CategoryAxisRenderer,
                labelRenderer: $.jqplot.CanvasAxisLabelRenderer,

              },
              yaxis: {
                label: "PER",
                tickOptions: {
                  formatString: "%d"
                },
                rendererOptions: {
                  //forceTickAt0: true
                }
              },
              y2axis: {
                tickOptions: {
                  formatString: "%d"
                },
                rendererOptions: {
                  alignTicks: true
                  //forceTickAt0: true
                }
              }
            },
            
            
            highlighter: {
              show: true,
              showLabel: true, 
              tooltipAxes: 'y',
              sizeAdjust: 7.5 , tooltipLocation : 'ne'
            },
            
            
            legend: {
              show: true,
              location: 'sw',
              placement: 'outside'
            }  
          });
    });

when I used

var jsonurl ="../report/jsondata.txt"; it worked. 

jsondata.txt included [[ 23, 47, 86, 25, 74 ]].

but when I used the other one it doesn't. I want to get values from server. I guess there are problems passing values.

please help specifically T.T

thanks!

EDIT

this is the table. the contents have only one table. I want to pass PER's values.

ENTERPRISE PERIOD EPS STOCKPRICE PER

232 232 23 432 23

236 56 65 43 47

574 53 45 75 86

453 45 45 265 25

46 63 67 45 74

I just made values temporarily to test.

3
  • Show the contents of the file which doesn't work. Commented Oct 3, 2012 at 12:01
  • Your code accepts data in JSON format, so as I see you should have something like [[232, 232, 23, 432, 23]]. If you want to have two dimentional array, then [[232, 232, 23, 432, 23], [236, 56, 65, 43, 47], [...]] Commented Oct 3, 2012 at 14:11
  • I'm asking how to do what you are saying.. Commented Oct 4, 2012 at 7:37

1 Answer 1

2

The problem is the format of your json data, which is coming from the (associative) $output array. you don't want those '"PER"'s in it! try replacing these lines of code:

while($e=mysql_fetch_assoc($q))
    $output[]=$e;

print(json_encode($output)); 

with these:

while($e=mysql_fetch_assoc($q))
    $output[]=$e["PER"];

print ('['.json_encode($output).']'); 

this will change $output from an associative array, to a standard array of integers.

and the print line adds additional square brackets around the json data - which the jqplot requires.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.