我使用引导类型ajax调用来创建一种即时搜索我的网站。这一切都很好,除了Typeahead只能处理标题而不是hrefs。例如:Twitter bootstrap Typeahead来填充hrefs
我的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>
过程函数是内置到Bootstrap中的函数,它取得每个结果的标题并填充下拉列表h it。我希望能够从我的数据库中获得href,然后下拉菜单中的链接实际上可以正常工作,而不仅仅是显示。
问题是,如果我在我的PHP文件中写入$array[] = array("title"=>$row['title'],"href"=>$row['link']");
,它会破坏所有内容,因为推测process()无法处理额外的数据。
有没有人有任何建议?在事先键入的内容更多信息可以在这里找到:http://twitter.github.com/bootstrap/javascript.html#typeahead
感谢
感谢这个,它的工作相当不错 - 但现在在我的下拉列表中,我得到了整个的字符串javascript对象,而不仅仅是标题。有没有办法阻止这种行为?我使用updater函数去更新时自动将浏览器重定向到href。 – Lars 2013-02-19 16:18:41
你应该检查你的代码。返回下拉列表标签的函数是“荧光笔” 此行: 返回item.title.replace(新的RegExp('('+ query +')','ig'), – Gonzalo 2013-02-19 16:36:16
很好,现在工作。你的帮助。 – Lars 2013-02-19 17:50:18