我正在尝试在表单中使用 twitter bootstrap typeahead 并使用服务器端查询从数据库中获取记录。我已经启动并运行了该功能,一旦我在 3 个字符后开始输入搜索,它就会获取数据,这很棒。然而,在第一次加载页面时,我从主 bootstrap-typeahead.js 脚本中得到一个 500 错误异常,即:
NotFoundHttpException
使用页面时我没有收到错误 - 只是在第一次加载时。
所以,我假设脚本对服务器端的查询进行了初始调用,可能是空白查询,这可能是原因。我已经尝试在 laravel 的路由和搜索功能中添加默认值,但仍然是错误。
该页面按原样工作,但我不想出现此错误。我可以从哪里开始寻找?我什至不确定脚本发出了什么请求来抛出错误......
这是脚本 - 初始化 typeahed 函数:
$('#typeahead').typeahead({
source: function(query, process) {
if(query===null) {
query = 'aaa';
}
$.ajax({
url: '/customers/typeahead/'+query,
type: 'GET',
dataType: 'json',
//data: "query=" + query,
async: false,
success: function(data) {
customers = [];
map = {};
$.each(data, function(i, customer) {
//map object with unique name for each returned customer
map[customer.first_name + ' ' + customer.last_name + ': ' + customer.email + ' - ' + customer.id ] = customer;
customers.push(customer.first_name + ' ' + customer.last_name + ': ' + customer.email + ' - ' + customer.id);
});
process(customers);
}
});
},
minLength: 3,
updater: function(item) {
alert("selected");
id = map[item].id;
fetchCustomer(id);
return item;
}
});
这是laravel路线:
Route::get('customers/typeahead/{qry?}', function ($qry = 'a') {
return Customer::customerTypeahead($qry);
});
这是 laravel 模型函数:
static public function customerTypeahead($qry) {
//$qry = Input::get('query');
$qry='%'.$qry.'%';
$customers=Customer::where('first_name','like',$qry)
->orWhere('last_name','like',$qry)
->orWhere('email','like',$qry)
->get(array('first_name','last_name','email','id'))->toJson();
return $customers;
}
有什么想法可能引发初始错误以及如何开始跟踪?
谢谢