【问题标题】:How do I prepare multidimensional array from php mysql query for jQuery autocomplete?如何从 php mysql 查询中为 jQuery 自动完成准备多维数组?
【发布时间】: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>

【问题讨论】:

    标签: php jquery mysql arrays autocomplete


    【解决方案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。这正是我一直在寻找的。我知道结构需要是什么,但不完全确定如何去做(我尝试了许多不同的变体来创建数组)。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    相关资源
    最近更新 更多