【问题标题】:Autocomplete form once the name is enter PHP输入名称后自动完成表单 PHP
【发布时间】:2016-10-18 15:01:18
【问题描述】:

我发现了几个类似的问题,但没有相同的“变量”,所以我们开始吧:

我有一个简单的表格,我在其中输入了一个名字,我需要自动填写表格的其余部分 (ID)。

在数据库中获取数据不是问题,我可以使用 PHP (Search.php) 返回 Json:

//get search term
$searchTerm = $_GET['term'];

//get matched data from table
$query = $db->query("SELECT * FROM info_employer WHERE Prenom LIKE '%".$searchTerm."%' ORDER BY Prenom ASC");
while ($row = $query->fetch_assoc()) {
    $data[] = array( Nom => $row['Prenom'] . ' ' . $row['Nom'], Num => $row['Num'] );
}


//return json data
echo json_encode($data);

这给了我一个如下所示的数组:

[{"Nom":"Andre Nadeau","Num":"104J"},{"Nom":"Andre Potvin","Num":"130J"},{"Nom":"Andre Thibodeau","Num":"91J"}]

朋友告诉我应该使用 Jquery 和 Ajax 来使用这个数组来填写我的表单,但我有 2 个问题。

首先,如果我返回一个数组而不是“只是名称”,我的自动完成表单将不再起作用。它给了我 X 个空格(取决于结果的数量)。

当然我最大的问题是我无法在表单中发送 ID (Num)

我用来自动完成名称的Javascript:

    <script>
    $(function() {
        $( "#Nom" ).autocomplete({
            source: 'Search.php',
        })
    })
</script>

【问题讨论】:

  • source 参数需要一个简单的数组,而您将多维数组传递给它。

标签: javascript php jquery ajax autocomplete


【解决方案1】:

您需要更改返回对象以使其符合规范here

$data[] = array( "label" => $row['Prenom'] . ' ' . $row['Nom'], "value" => $row['Num'] );

这应该会产生一个带有“标签”和“值”键的对象数组。这将适用于您的自动完成功能。

【讨论】:

  • 这不是在标记我的价值观?
  • $data[] = array( Nom => $row['Prenom'] . ' ' . $row['Nom'], Num => $row['Num'] );
  • 明确一点,“Nom”使用 2 行,“Num”是包含 ID 的行
  • 阅读我发布的链接。您传递到自动完成的数据集必须符合他们的预期。您可以传递一个字符串数组、一个带有“标签”和“值”的对象数组、一个发布了 GET 值的 URL,或者一个专门的回调来连接到您的数据源。在 PHP 中更改数组键以匹配它会更容易。
  • 我阅读了链接,但仍然无法理解我需要在此处更改的内容:{"Nom":"Andre Nadeau","Num":"104J"} "Nom" 是我的标签,并且“安德烈·纳多”是我的价值吗?对我来说,看起来一切都正确标记了?我必须使用确切的术语“标签”和“价值”吗?
猜你喜欢
  • 1970-01-01
  • 2021-11-01
  • 2020-02-23
  • 1970-01-01
  • 2021-04-14
  • 1970-01-01
  • 1970-01-01
  • 2019-09-30
  • 1970-01-01
相关资源
最近更新 更多