Angular-chart js并连接到MySQL后端


Angular-chart js and connecting to a MySQL Backend

首先,提前感谢您的帮助。我已经挣扎了几天试图找出如何钩角图对象到mysql数据库。我目前有静态数据的图表工作。我的项目中有一个通用的php文件,看起来像这样:

// Create the connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check the connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
//echo "Connected successfully";
//the sql to run
$sql = "SELECT * FROM Test2";
//run it
$result = $conn->query($sql);
//check for results
if ($result->num_rows > 0) {
//create an array
$dataarray[] = array();
//loop em
while($row =mysqli_fetch_assoc($result)) {
    $dataarray[] = $row;
}
//make em json
echo json_encode($dataarray);
}
//} else {
//    echo "0 results";
//}
//close out our connection
$conn->close();
?> 

这很好。该表返回标题为Name和Value的两行。此时只有测试数据。

在我的html/javascript中,我有以下内容:
<script>
        angular.module("ChartApp", ["chart.js"]).controller("PieCtrl", function ($scope, $http) {
          $http.get('./GetTestData.php').
            success(function(data) {
                $scope.records = data;
            });
          $scope.labels = ["Download Sales", "In-Store Sales", "Mail-Order Sales"];
          $scope.data = [300, 500, 100];
        });
    </script>

我真的不知道从这里该去哪里。任何帮助都会很感激。

花了很长时间,但我终于想通了。我必须获取JSON对象并将值转换为单独的数组。以下是相关代码:

angular.module("ChartApp", ["chart.js"]).controller("PieCtrl", function ($scope, $http) {
 $http.get('./GetTestData.php').
success(function(data) {
    var names = [];
    for(var i = 0; i < data.length; i++) {
        var obj = data[i];
        if(obj.Name != undefined) {
            names.push(obj.Name);
        }
    }
    var values = [];
    for(var i = 0; i < data.length; i++) {
        var obj = data[i];
        if(obj.Name != undefined) {
            values.push(obj.Value);
        }
    }
    //$scope.records = data;
    $scope.labels = names;
    $scope.data = values;
    });
        });
    </script>

我得到以下错误的代码:

Uncaught TypeError: Cannot read property 'draw' of undefined

因此我必须在$scope.data处插入[]以使其工作。

$scope.labels = names;
$scope.data = [values];