首页 > 解决方案 > 我想通过 JSON 使用 Ajax 从函数发送数组

问题描述

我正在尝试从函数发送 JSON 数组。

我的代码是:

function categoryTree($parent_id = 0, $sub_mark = ''){
    global $connection;
    $query = 'SELECT * FROM ws_categories WHERE parent_id = :parent_id ORDER BY sort_order ASC, name ASC';
    $statement = $connection->prepare($query);
    $statement->execute(['parent_id' => $parent_id]);
        while ($row = $statement->fetch()) {
        echo ''.$sub_mark.''.$row['name'].'';
        categoryTree($row['category_id'], $sub_mark.'– ');
    }
}

$output = array(
    "draw"          =>  intval($_POST["draw"]),
    "recordsTotal"      =>  $filtered_rows,
    "recordsFiltered"   =>  get_total_all_records(),
    "data"          =>  categoryTree()
);
echo json_encode($output);

我不确定我的代码哪里错了。尝试从 categoryTree() 收集所有数据并通过 JSON 发送,但没有成功。

标签: phpjsonpdo

解决方案


现在向我显示类别,但仅显示没有子类别的父类别:

$output = array();

function categoryTree($parent_id = 0, $sub_mark = ''){
    global $connection;
    $query = 'SELECT * FROM ws_categories WHERE parent_id = :parent_id ORDER BY sort_order ASC, name ASC';
    $statement = $connection->prepare($query);
    $statement->execute(['parent_id' => $parent_id]);
    $filtered_rows = $statement->rowCount();

        while ($row = $statement->fetch()) {
                $sub_array = array();
                $sub_array[] = $sub_mark.$row['name'];
                $sub_array[] = '<button type="button" name="update" id="'.$row["category_id"].'" class="btn btn-info btn-sm update"><span class="glyphicon glyphicon-pencil"></span></button>';
                $array[] = $sub_array;
                categoryTree($row['category_id'], $sub_mark.'&ndash; ');
        }
        return $array;
}

$data = categoryTree();

$output = array(
    "draw"              =>  intval($_POST["draw"]),
    "recordsTotal"      =>  $filtered_rows,
    "recordsFiltered"   =>  get_total_all_records(),
    "data"              =>  $data
);
echo json_encode($output);

我确信这即将完成,但我不知道我错过了什么。


推荐阅读