我正在尝试在我的应用程序中使用 typeahead 实现全文自动完成搜索。但我无法弄清楚它是如何工作的。
如果我手动输入数据源,我可以获得建议。但是如果我尝试使用 AJAX 调用,我将无法获得结果。我的另一个问题是,我会将搜索查询与控制器中的预输入查询分开吗?
任何帮助表示赞赏。
我的论坛视图:
{{ Form::open(array('url' => 'searchblogs','method' => 'post','id' => "search", 'class' => "input-append")) }}
<input class="typeahead" size="16" type="text" value="Arama..."
onfocus="if(this.value=='Search...') this.value=''" onblur="if(this.value=='') this.value='Arama...'"
data-provide="typeahead" data-items="4" data-page="url('typequery')" />
<input class="btn search-bt" type="submit" name="submit" value="" />
{{ Form::close() }}
我的jQuery:
<script>
$('.typeahead').typeahead({
source : function(typeahead, query){
$.ajax({
url : 'typequery',
type : 'POST',
data : { query : query, column : 'title' },
dataType : 'json',
async : true,
success : function(data) {
return process(data.titles);
}
});
}
});
</script>
我的控制器是:
public function postTypeahead()
{
// Get the query strings.
//
$column = Input::get('column');
$query = Input::get('query');
// Check if the column name is valid and make sure we have a query.
//
if ( in_array( $column, $this->valid_filters ) and strlen($query) >= 1 ):
// Initiate an empty array.
//
$data = array();
// Search the database.
//
$results = Post::select( $column )->where( $column, 'LIKE', '%' . $query . '%')->get();
// Loop through the results.
//
foreach ( $results as $result ):
$data[] = $result->$column;
endforeach;
endif;
// Return a response.
//
return Response::json($data);
}