在从输入框中清除输入后,LaravelAjax搜索将整个集合作为对查询的响应



当我清除搜索功能的输入字段时,响应应该不会显示任何结果,但它给出了完整的集合。当有输入时,它工作得很好,但一旦我清除它,整个集合就会显示出来。这是Laravel控制器类。

public function search(Request $request)
{  if($request->ajax()){
$results = DB::table('PROPERTY_TAGS')->where('TAG_NAME','LIKE','%'.$request->search."%")->get();
$output='';
if(count($results)>0){
foreach($results as $result){
$output.='<p>'.$result->TAG_NAME.'</p>';
}
}else{
$output="<p>no data found</p>'";
}
return $output;
}
}

这是我的HTML与laravel刀片模板:

<div class="row">
<div class="col s9 "> <input type="text" id="search" name="search" placeholder="Search" /></div>
<div class="col s3"><a href="sass.html"><i class="material-icons">search</i></a></div>
<div class="col s12">
<b>Ex: </b><i>Beltola, Zoo Road</i>
<!-- Suggestions will be displayed in below div. -->
<div id="display"></div>
</div>
</div>

这是脚本:

<script type="text/javascript">
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$('#search').on('keyup',function(){
$value=$(this).val();
$.ajax({
type : 'GET',
url : '/search',
data:{'search':$value},
success:function(data){
if(data == ''){
$('#display').text('');
}
$('#display').html(data).show();
//alert(data.success);
}
});
});
</script>

如果字符串为空,则不需要发出Xhr请求。可以添加一点检查,如下所示。

$('#search').on('keyup',function() {
var value = $(this).val();
//ADD THIS... ++
if (value.length === 0) {
//clear results
$('#display').text('');
//no query, just return.
return;
}
//++
$.ajax({
type : 'GET',
url : '/search',
data:{'search': value},
success:function(data) {
if (data == '') {
$('#display').text('');
}
$('#display').html(data).show();
//alert(data.success);
}
});
});

最新更新