0

我想用我的数据库中的数据创建一个图表线图,但是当我尝试绘制它时,我遇到了一个 javascript 错误:

chartist.min.js:8 Uncaught TypeError: Cannot read property 

这是我的代码,

HTML页面:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Graphique Vitesse</title>
    <link rel="stylesheet" type="text/css" href="chartist.min.css"/>
    <script src="jquery.js"></script>
    <script src="chartist.min.js"></script>

    <script type="text/javascript">
        function test() {

            var c=0;
            var series = [];
              for (var i = 80; i < 81; ++i) {


                $.ajax({url: "test.php?id_cycliste="+i, success: function(result){
                  var i=0;
                  var ser = []

                      for (v of result){
                        alert("test1 " + v);
                        //alert("Salope"+v);
                        ser[i] = v.y;
                        ++i;
                        alert(1);
                      }
                      alert(2)
                      series[c] = ser;
                      ++c;
                                }});
                            //alert ("Tu va te prendre une calotte"+series.toString());
                            alert("test 2"+series.toString())

              //   $.ajax(("test.php?id_cycliste="+i), function (result) {
              //     var i=0;
              //     var ser = []
              //
              //     for (v of result){
              //       alert("Salope"+v);
              //       ser[i] = v.y;
              //       ++i;
              //       alert(1);
              //     }
              //     alert(2)
              //     series[c] = ser;
              //     ++c;
              //           })
              //           alert ("Tu va te prendre une calotte"+series.toString());
               }

              var options = {
    // Don't draw the line chart points
    showPoint: false,
    // Disable line smoothing
    lineSmooth: false,
    // X-Axis specific configuration
    axisX: {
      // We can disable the grid for this axis
      showGrid: false,
      // and also don't show the label
      showLabel: false
    },
    // Y-Axis specific configuration
    axisY: {
      // Lets offset the chart a bit from the labels
      offset: 60,
      // The label interpolation function enables you to modify the values
      // used for the labels on each axis. Here we are converting the
      // values into million pound.
      labelInterpolationFnc: function(value) {
        return '$' + value + 'm';
      }
    }
  };


              // var data = {labels,series}
              var data = {
  // A labels array that can contain any sort of values
labels : [0,2,4,6,8,10,12,14,16],
  // Our series array that contains series objects or in this case series data arrays
  series
};
              new Chartist.Line('.ct-chart', data, options);
            }
            test();

    </script>
</head>
<body>
  <h1> Bonjour </h1>
    <div class="ct-chart ct-perfect-fourth"></div>
    <div class="ct-chart"></div>
    <div id="graphVitesse" style="height: 350px;"></div>
</body>
</html>

PHP页面:

<?php

header('Content-Type: application/json');

$con = mysqli_connect("localhost","root","","veloinfospublic");

// Check connection

$id = $_GET["id_cycliste"];
if (mysqli_connect_errno($con))
{
    echo "Failed to connect to DataBase: " . mysqli_connect_error();
}else
{
    $data_points = array();
    $result = mysqli_query($con, "SELECT Temps,Vitesse FROM releve where cycliste_id=".$id);
    // var_dump ($result);

    // while($row = mysqli_fetch_array($result))
    // {
    //     $point = array("label" => $row['temps'] , "y" => $row['vitesse']);
    //     var_dump ($point);
    //
    //
    // }

    while ($row = $result->fetch_assoc()) {
        $point = array("label" => $row['Temps'] , "y" => $row['Vitesse']);
        array_push($data_points, $point);
    }
    echo json_encode($data_points, JSON_NUMERIC_CHECK);
}
mysqli_close($con);

?>

如果我去http://localhost/chartservice/test.php?id_cycliste=80 我有以下结果:

[{"label":0,"y":37},{"label":2,"y":35},{"label":4,"y":5},{"label":6,"y":11},{"label":8,"y":23},{"label":10,"y":33},{"label":12,"y":27},{"label":14,"y":37}]

但是如果我转到 HTML 页面,我没有显示任何图形,并且出现以下 JS 错误:

chartist.min.js:8 Uncaught TypeError: Cannot read property 'querySelectorAll' of nullc.createSvg @ chartist.min.js:8d @ chartist.min.js:8h @ chartist.min.js:8

你发现问题了吗?你能帮我吗?

谢谢

4

1 回答 1

0

我已经解决了问题,我刚刚将脚本移到了身体之后

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Graphique Vitesse</title>
    <link rel="stylesheet" type="text/css" href="chartist.min.css"/>
    <script src="jquery.js"></script>
    <script src="chartist.min.js"></script>
</head>
<body>
  <h1> Bonjour </h1>
    <div class="ct-chart ct-perfect-fourth"></div>
    <div class="ct-chart"></div>
    <div id="graphVitesse" style="height: 350px;"></div>
</body>

<script type="text/javascript">
    function test() {

        var c=0;
        var series = [];
          for (var i = 80; i < 81; ++i) {


            $.ajax({url: "test.php?id_cycliste="+i, success: function(result){
              var i=0;
              var ser = []

                  for (v of result){
                    alert("test1 " + v);
                    //alert("Salope"+v);
                    ser[i] = v.y;
                    ++i;
                    alert(1);
                  }
                  alert(2)
                  series[c] = ser;
                  ++c;
                            }});
                        //alert ("Tu va te prendre une calotte"+series.toString());
                        alert("test 2"+series.toString())

          //   $.ajax(("test.php?id_cycliste="+i), function (result) {
          //     var i=0;
          //     var ser = []
          //
          //     for (v of result){
          //       alert("Salope"+v);
          //       ser[i] = v.y;
          //       ++i;
          //       alert(1);
          //     }
          //     alert(2)
          //     series[c] = ser;
          //     ++c;
          //           })
          //           alert ("Tu va te prendre une calotte"+series.toString());
           }

          var options = {
// Don't draw the line chart points
showPoint: false,
// Disable line smoothing
lineSmooth: false,
// X-Axis specific configuration
axisX: {
  // We can disable the grid for this axis
  showGrid: false,
  // and also don't show the label
  showLabel: false
},
// Y-Axis specific configuration
axisY: {
  // Lets offset the chart a bit from the labels
  offset: 60,
  // The label interpolation function enables you to modify the values
  // used for the labels on each axis. Here we are converting the
  // values into million pound.
  labelInterpolationFnc: function(value) {
    return '$' + value + 'm';
  }
}
};


          // var data = {labels,series}
          var data = {
// A labels array that can contain any sort of values
labels : [0,2,4,6,8,10,12,14,16],
// Our series array that contains series objects or in this case series data arrays
series
};
          new Chartist.Line('.ct-chart', data, options);
        }
        test();

</script>
</html>
于 2016-04-22T12:59:29.083 回答