我这里有select2来显示用户电子邮件数据,但是数据可能多达数万个,这使我的select2非常慢,有没有一种方法只能在输入3个字母的用户后显示?
这是我的脚本select2
$('#add_form').find("#list_user").select2({
width: "100%",
placeholder: "Choose User by Email...",
ajax: {
url: "{{ route('getuser') }}",
dataType: "json",
delay: 250,
processResults: function(data) {
return {
results: $.map(data, function(obj) {
return {
id: obj.email,
text: obj.email
};
})
};
},
}
});
这是我的控制器
public function getUser(Request $request)
{
$search = $request->input('term', '');
$user = DB::table('users.users')->where('email','LIKE','%'.$search.'%')
->get();
return response()->json($user);
}
解决问题的唯一方法是仅记录并显示一些记录。然后从选择中,您需要调用控制器以再次搜索数据并显示它。
为此,您可以将查询更改为
user = DB::table('users.users')->where('email','LIKE','%'.$search.'%')->take(10)->get()
对于可搜索的选择,您可以参考此链接和此JSFiddle链接