php - 我想通过 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 发送,但没有成功。
解决方案
现在向我显示类别,但仅显示没有子类别的父类别:
$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.'– ');
}
return $array;
}
$data = categoryTree();
$output = array(
"draw" => intval($_POST["draw"]),
"recordsTotal" => $filtered_rows,
"recordsFiltered" => get_total_all_records(),
"data" => $data
);
echo json_encode($output);
我确信这即将完成,但我不知道我错过了什么。
推荐阅读
- vb.net - Project Online CSOM:获取每日作业计划
- python - 在 Reportlab 中将变量页眉和页脚添加到多页 PDF
- c# - 为什么当 ModelState.IsValid 为 false 时无法在 Controller 中命中断点?
- python - 如何从“张量”中获取多个相同大小的切片?
- node.js - 从节点 js lambda 访问 s3 时访问被拒绝
- spring - Okta 生成不记名令牌
- go - 使用 go 将多行字符串写入 yaml 文件
- flutter - 在颤振地图(openstreet)中制作搜索地址但无法将相机移动到标记位置
- python - django 如何为模型 DecimalField 使用选项
- api - Matomo: 尝试通过 setDocumentTitle("testDirectory/testTitle"); 设置标题类别