0

使用 typeahead,似乎无法使用 PDO 获取结果。用我有限的英语看起来最好,找不到解决方案,也许我在 PHP 中做错了什么?这是细分:

使用 typehead.js 和 bootstrap 3。

HTML:

<input type="text" class="seek typeahead" id="seekInput" placeholder="Search" />

JS:

$(document).ready(function() {
     $('.seek.typeahead').typeahead({                               
          name: "seek",                
        remote: 'include/search.php?store=%QUERY'
    });
});

Search.php 以及我试图为 typeahead 生成数组的位置:

require_once ('konnekt.php');

$query = $db->prepare("SELECT store FROM retailers WHERE  store or country LIKE :country");
$country = (isset($_POST['query']) === true) ? $_POST['query'] : '';
$query->bindValue(':country', '%' . $country . '%' );
$query->execute();
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) {
    $array[] = $row;
}
echo json_encode($array);

这是我的浏览器所说的:

状态 200

回复:[{"store":"Aplace"},{"store":"Aplace"},{"store":"Design Only"}]

现场发生的事情:

不明确的

4

1 回答 1

0

开箱即用,typeahead.js 将<p/>使用默认数据格式呈现标签,它可以像字符串数组一样简单:

[
    "Aplace",
    "Aplace",
    "Design Only"
]

这些字符串将自动转换为datums,这是定义数据如何显示以及查询如何与数据匹配的格式的预输入名称。

以下是使用原始示例在 PHP 中输​​出该字符串数组的方法:

require_once ('konnekt.php');
$result = array();
$query = $db->prepare("SELECT store FROM retailers WHERE  store or country LIKE :country");
$country = (isset($_POST['query']) === true) ? $_POST['query'] : '';
$query->bindValue(':country', '%' . $country . '%' );
$query->execute();
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) {
    $result[] = $row["store"];
}
echo json_encode($result);

如果您希望继续store用作数据的密钥,您可以:

  • valueKey在原始 typeahead 定义中设置参数:

    $('.seek.typeahead').typeahead({                               
        name: "seek",                
        remote: 'include/search.php?store=%QUERY',
        valueKey: 'store'
    });
    

tokens然后还返回每个数据所需的属性:

    [
      {
        "store": "Aplace",
        "tokens": ["Aplace"]
      },
      {
        "store": "Aplace",
        "tokens": ["Aplace"]
      },
      {
        "store": "Design Only",
        "tokens": ["Design", "Only"]
      }
    ]

请注意,标记是单个单词的数组,它们是 typeahead 用于匹配您的查询的实际值。

于 2013-10-29T02:38:41.597 回答