私は ajax 呼び出しでブートストラップの先行入力を使用して、自分の Web サイトの一種のインスタント検索を作成しています。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>
プロセス関数は Bootstrap に組み込まれた関数で、各結果のタイトルを取得してドロップダウン リストに入力します。データベースから href も取得できるようにしたいのですが、ドロップダウンのリンクは、単に表示するのではなく、実際に機能します。
問題は、$array[] = array("title"=>$row['title'],"href"=>$row['link']");
PHP ファイルに書き込むと、おそらく process() が追加データを処理できないため、すべてが壊れてしまうことです。
誰か提案はありますか?Typeahead の詳細については、http ://twitter.github.com/bootstrap/javascript.html#typeahead を参照してください。
ありがとう