如何从 php mysql 查询中为 jQuery 自动完成准备多维数组?
Posted
技术标签:
【中文标题】如何从 php mysql 查询中为 jQuery 自动完成准备多维数组?【英文标题】:How do I prepare multidimensional array from php mysql query for jQuery autocomplete? 【发布时间】:2016-11-25 05:16:45 【问题描述】:我正在尝试设置一个使用 php mysql 查询结果的 jQuery 自动完成功能。
我有适用于一维数组值的基本自动完成功能,但无法让它适用于二维数组。我想使用二维数组,以便一列填充自动完成,一列填充表单中提交的值(通过输入值或另一个隐藏值)。
我知道在使用 json_encode()
:[ label: "Choice1", value: "value1" , ... ]
后格式需要看起来像这样,但不能让它看起来像那样...
下面的代码不是我的工作代码,但它代表了我想做的事情:在 autocomplete 字段中显示名称,但提交 page_id。 p>
这是我的代码:
$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>
【问题讨论】:
【参考方案1】:当要区分值和标签时,必须提供对象数组,如 jQuery 自动完成文档中所述:
来源
数组:数组可用于本地数据。有两种支持的格式:
字符串数组:[ "Choice1", "Choice2" ]
具有标签和值属性的对象数组:[ label: "Choice1", value: "value1" , ... ]
当您正在寻找第二个选项时,您应该在 PHP 中准备好确切的结构。你可以这样做:
while($row = mysqli_fetch_assoc($result))
$array[] = array(
"label" => $row['name'],
"value" => $row['page_id']
);
这会将所谓的关联数组添加到普通(索引)数组中。 json_encode
将 关联数组 转换为对象表示法。
【讨论】:
非常感谢,trincot。这正是我一直在寻找的。我知道结构需要是什么,但不完全确定如何去做(我尝试了许多不同的变体来创建数组)。谢谢!以上是关于如何从 php mysql 查询中为 jQuery 自动完成准备多维数组?的主要内容,如果未能解决你的问题,请参考以下文章
php mysql jquery ajax 查询数据库三级联动
如何将日期和其他变量绑定到 php sql 查询? (MySql)