繁体   English   中英

javascript中的PHP JSON变量

[英]PHP JSON variable in javascript

我正在使用php生成一个JSON“文本”,并希望将其包含在同一文件的javascript中。 我认为我在理解java如何处理JSON作为文本vs作为Object时遇到问题。

注意:我将很快将mysql更改为mysqli,只是想让这个东西先工作。 这是我的脚本:

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>Knox QA tickets status</title>
</head>
<body>
  <script src="am/amcharts/amcharts.js" type="text/javascript"></script>
  <script src="am/amcharts/serial.js" type="text/javascript"></script> 

<?php
    //$subm = "8";
    // This is being loaded from a selection html script 
    $subm =  $_POST["submoduleID"];
    if(!isset($_POST["submoduleID"]) )
    {
    // set it to the default container if it's not set.
     $subm = "8";
    }

    // Connect to MySQL
    $link = mysql_connect( 'localhost', 'root', 'secret' );
    if ( !$link ) {
      die( 'Could not connect: ' . mysql_error() );
    }

    // Select the data base
    $db = mysql_select_db( 'xqa_status', $link );
    if ( !$db ) {
      die ( 'Error selecting database \'test\' : ' . mysql_error() );
    }

    // Fetch the data
    $query = ("select date, tested, passed from test_status where xqa_id=" . $subm . " order by test_status_id limit 10");

    $result = mysql_query( $query );

    // Make a josn formatted output 
    $rows = array();
    while ( $r = mysql_fetch_assoc($result)) {
      $rows[] = $r;
    }
    $chartData_json = json_encode($rows);
    print $chartData_json;
    mysql_close($link);
?>


<!-- Custom Function  
  <script>
    AmCharts.loadJSON = function(file) {
      // create the request
      if (window.XMLHttpRequest) {
        // IE7+, Firefox, Chrome, Opera, Safari
        var request = new XMLHttpRequest();
      } else {
        // code for IE6, IE5
        var request = new ActiveXObject('Microsoft.XMLHTTP');
      }

      request.open('GET', file, false);
      request.send();

      // parse adn return the output
      return eval(request.responseText);
    };
  </script> -->


<!-- chart container -->
<div id="chartdiv" style="width: 600px; height: 300px;"></div>


<!-- the chart code -->
  <script>
    var chart;
    var chartData1 = "<?php echo $chartData_json; ?>";
    var myObject = JSON.parse(chartData1, reviver);
    // create chart
    AmCharts.ready(function() {

      // load the data
      // SERIAL CHART
      chart = new AmCharts.AmSerialChart();
      chart.pathToImages = "am/amcharts/images/";
      chart.dataProvider = myObject;
      chart.categoryField = "date";
      chart.dataDateFormat = "YYYY-MM-DD";

      // GRAPHS

      var graph1 = new AmCharts.AmGraph(); 
      graph1.type = "smoothedLine";
      graph1.title = "Tested";
      graph1.valueField = "tested";
      graph1.bullet = "round";
      graph1.bulletSize = 5;
      graph1.bulletBorderColor = "#FFFFFF";
      graph1.bulletBorderThickness = 2;
      graph1.lineThickness = 2;
      graph1.lineAlpha = 0.5;
      chart.addGraph(graph1);

      var graph2 = new AmCharts.AmGraph();
      graph2.type = "smoothedLine";
      graph2.title = "Passed";
      graph2.valueField = "passed";
      graph2.bullet = "round";
      graph2.bulletSize = 5;
      graph2.bulletBorderColor = "#FFFFFF";
      graph2.bulletBorderThickness = 2;
      graph2.lineThickness = 2;
      graph2.lineAlpha = 0.5;
      chart.addGraph(graph2);

      // CATEGORY AXIS
      chart.categoryAxis.parseDates = true;
      chart.categoryAxis.autoGridCount = false;
      chart.categoryAxis.gridCout = chartData.length;
      chart.categoryAxis.gridPosition = "start";
      chart.categoryAxis.labelRotation = 90;

      // LEGEND
      var legend = new AmCharts.AmLegend();
      chart.addLegend(legend);

       // CURSOR
       var chartCursor = new AmCharts.ChartCursor();
       chartCursor.cursorAlpha = 0;
       chartCursor.cursorPosition = "mouse";
       chartCursor.categoryBalloonDateFormat = "YYYY-MM-DD";
       chart.addChartCursor(chartCursor);

       // SCROLLBAR
       var chartScrollbar = new AmCharts.ChartScrollbar();
       chart.addChartScrollbar(chartScrollbar);

       // 3D
       // chart.angle = 30;
       // chart.depth3D = 15;



       // WRITE
       chart.write("chartdiv");



    });

  </script>

</body>
</html>

json输出的样本是这样的:

[{"date":"2014-01-09","tested":"12","passed":"32"},{"date":"2014-01-10","tested":"12","passed":"34"},{"date":"2014-01-11","tested":"22","passed":"34"},{"date":"2014-01-12","tested":"22","passed":"34"},{"date":"2014-01-13","tested":"40","passed":"34"},{"date":"2014-01-14","tested":"40","passed":"34"},{"date":"2014-01-15","tested":"40","passed":"34"}]

您需要将PHP的输出分配到Javascript变量中:

<script>
  var json_data=<?php

...

?>;

  // Do stuff with json_data
</script>

然后json_data将是Javascript中的一个或多个对象(它不再是JSON,因为JSON将被解析为数组文字,而不是字符串)。 这很可能是你想要的,因为那时你可以使用数组,比如json_data[0].data

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM