我正在尝试设置一个使用 PHP MySql 查询结果的 jQuery 自动完成功能。
我的基本自动完成功能适用于一维值数组,但无法使其适用于二维数组。我想使用一个二维数组,以便一列填充自动完成,一列填充表单中提交的值(通过输入值或另一个隐藏值)。
我知道使用 json_encode()
后格式需要如下所示:[ { label: "Choice1", value: "value1"}, ... ]
但不能让它看起来像那样...
下面的代码不是我的工作代码,但它代表了我想做的事情:在自动完成字段中显示名称,但提交page_id。
这是我的代码:
$query = "SELECT name, page_id FROM table WHERE city = '{$location}' ORDER BY name";
$result = $mysqli->query($query);
while($row = mysqli_fetch_assoc($result)){
$array[] = $row;
}
<script>
$( function() {
var array = <?php echo json_encode($array); ?>;
$( "#input" ).autocomplete({
source: array
});
} );
</script>
最佳答案
当你想区分值和标签时,你必须提供一个对象数组,如 jQuery 自动完成文档中所述:
source
Array: An array can be used for local data. There are two supported formats:
- An array of strings:
[ "Choice1", "Choice2" ]
- An array of objects with label and value properties:
[ { label: "Choice1", value: "value1" }, ... ]
当您正在寻找第二个选项时,您应该在 PHP 中准备那个确切的结构。您可以按如下方式执行此操作:
while($row = mysqli_fetch_assoc($result)){
$array[] = array(
"label" => $row['name'],
"value" => $row['page_id']
);
}
这会将所谓的关联数组 添加到普通(索引)数组中。 json_encode
将关联数组 转换为对象表示法。
关于php - 如何从 php mysql 查询为 jQuery 自动完成准备多维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38507176/