数据形式

如果不太熟悉,想要没有问题地将数据库中的数据递送到渲染层颇有挑战。用Php的fetch_all(1)方法实际上得到了一个关联数组的数组(此处1代表数组中的项是关联数组),利用json_encode()关联数组转换为JSON字符串,得到了一个JSON字符串数组

而前端的JavaScript的JSON.parse()方法支持将JSON字符串转为对象,也支持将JSON字符串数组转为对象数组,Vue就可以渲染了。

Php

Php从数据库获取数据并以json形式响应请求,我这里接受了proc参数用来判断获取哪一种数据。

<?php
//获取api信息
$proc =$_POST['proc'];
//连接数据库
$servername = "127.0.0.1";
$username = "root";
$password = "";
$conn = new mysqli($servername, $username, $password);
 
// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
} 
mysqli_select_db($conn, 'group' );
//具体API
if($proc=='getGroups'){
    $sql="select group_id,name,chair_id from groups;";
    $result=$conn->query($sql);
    if (mysqli_num_rows($result) > 0) {

            echo json_encode($result->fetch_all(1));

    } else {
        echo "a";
    }
}
//关闭连接
mysqli_close($conn);
?>

Vue.JS

Vue-resource支持发起http请求(就是AJAX),满足了我们的需求。{ emulateJSON: true }参数使服务器有能力接收POST请求附带的参数(将request body以application/x-www-form-urlencoded content type发送)。

        getdata: function() {
            this.$http.post('./api.php', { proc: 'getGroups' },{ emulateJSON: true }).then((response) => {
                this.table_data = JSON.parse(response.bodyText);
            }, (response) => {
                console.log('error');
            });
        }