typeahead仅返回数据库的前5行

时间:2015-11-01 15:42:33

标签: javascript json laravel-4 typeahead.js

任何人都可以帮我这个吗? 我有一张表格

 <form action={{'/query'}}  method="get" autocomplete="off">
        <input type="text" name="places" id="places">
        <input type="submit" value="Go">
 </form>

这是我的searh.js

$(document).ready(function(){
var places = new Bloodhound({
    datumTokenizer:Bloodhound.tokenizers.obj.whitespace('name'),
    queryTokenizer:Bloodhound.tokenizers.whitespace,
    remote: '/query'

});

places.initialize();

$('#places').typeahead({
    hint:true,
    highLight: true,
    minLength:2
},{
    name:'places',
    displayKey: 'name',

    source: places.ttAdapter()

});

});

这是我的路线

Route::get('/query',['uses'=>HomeController@query]);

这是HomeController中的查询功能

public function query()
{

    $query = Input::get('places');
    $results = DB::table('evac_center')->where('name','LIKE',$query.'%')->get();

    return Response::json($results);
}

这是结果 result

问题是我输入框中输入的内容,typeahead只返回数据库中的前5行。

1 个答案:

答案 0 :(得分:0)

尝试在数据集选项中设置limit

$('#places').typeahead({
    hint:true,
    highLight: true,
    minLength:2
  },{
    name:'places',
    displayKey: 'name',
    limit: 25,
    source: places.ttAdapter()
  });

您可能还需要在Bloodhound选项中设置sufficient

var places = new Bloodhound({
    datumTokenizer:Bloodhound.tokenizers.obj.whitespace('name'),
    queryTokenizer:Bloodhound.tokenizers.whitespace,
    remote: '/query',
    sufficient: 25
});

https://github.com/twitter/typeahead.js/blob/master/doc/jquery_typeahead.md https://github.com/twitter/typeahead.js/blob/master/doc/bloodhound.md