如何从 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 自动完成准备多维数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 MySQL 中的日期时间中减去小时数?

php mysql jquery ajax 查询数据库三级联动

如何将日期和其他变量绑定到 php sql 查询? (MySql)

从数据数组(php,mysql)编写循环sql查询

PHP-AJAX:如何通过 php/json 数组从查询中填充 jquery 数据表

如何在 MySQL 中为每个 ID 只选择一行?