我正在使用带有 ajax 调用的 bootstrap typeahead 来为我的网站创建一种即时搜索。除了 Typeahead 似乎只能处理标题而不是 href 之外,这一切都很好。例子:
我的 PHP 代码是这样的:
$results = mysql_query("MY SELECT QUERY GOES HERE");
$array = array();
while ($row = mysql_fetch_assoc($results)){
$array[] = $row['title'];
}
echo json_encode($array);
我的 Javascript 在这里:
$('#quickSearch').typeahead({
source: function (query, process) {
$.ajax({
url: "my_php_file.php",
type: "POST",
data: 'query=' + query,
dataType: 'JSON',
async: true,
success: function(data){
console.log(data)
process(data)
}
})
}
});
...一起,这些结果产生了这个 HTML:
<ul class="typeahead dropdown-menu" display: block;">
<li data-value="Baltimore" class="active">
<a href="#"><span class="highlighter">B</span>altimore</a>
</li>
</ul>
process 函数是 Bootstrap 内置的函数,它获取每个结果的标题并用它填充下拉列表。我也希望能够从我的数据库中获取 href,然后下拉列表中的链接将真正起作用,而不仅仅是为了展示。
问题是,如果我写$array[] = array("title"=>$row['title'],"href"=>$row['link']");
在我的 PHP 文件中,它会破坏一切,因为大概 process() 无法处理额外的数据。
有没有人有什么建议?关于 Typeahead 的更多信息可以在这里找到:http: //twitter.github.com/bootstrap/javascript.html#typeahead
谢谢