php - 如何从 php mysql 查询为 jQuery 自动完成准备多维数组?

标签 php jquery mysql arrays autocomplete

我正在尝试设置一个使用 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/

相关文章:

php - 从多个复选框更新表

php - 简单的php计数器

php - 如何比较特定时间戳 20 到 60 年之间的时间戳?

javascript - 即时创建链接区域

android - 如何从 Android 应用程序通过 PHP 连接 MySQL 服务器?

PHP加载预先保存的表单

javascript - $.ajax 无法正常工作

jquery - 如何在 Javascript 中检查变量是否超时?

php - 使用 PHP/MySQLi 进行多次更新和插入

python - 无法在官方 MySQL 连接器中获得所需的输出