我正在尝试在我的应用程序中使用typeahead实现全文自动完成搜索。但是我弄清楚它是如何工作的。
如果我手动输入数据源,我可以得到建议。但是如果我尝试使用AJAX调用,我就无法得到结果。我的另一个问题是,我是否会从控制器中的typeahead查询中分离搜索查询?
感谢任何帮助。
我的论坛观点:
{{ 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);
}