你知道为什么自动完成搜索不能正常工作吗?

时间:2018-05-16 14:18:09

标签: php jquery laravel

我有一个上下文,其中有一个会议表存储会议。会议桌有一个“城市”栏。

我使用jquery autocomplete和laravel获得下面的代码,以便用户可以在输入文本中键入例如“co”之类的2个字母,并且在输入文本中显示名称为“co”的会议结果,以及如果有城市也有“co”这样的名字应该出现。但有两个问题:

  • 首先,当用户在输入中写入例如“co”并且有一个名为“conf”的会议时,它会出现在自动完成输入“conf conf”中,而不仅仅是“conf”。
  • 并且对于城市不起作用,如果有一个城市“纽卡斯尔”且用户写“Ne”,则输入类型文本中不会显示任何结果。

你知道为什么吗?

class AutocompleteController extends Controller
{

    public function search(Request $request){
        $search = $request->term;
        $conferences = Conference::where('name', 'LIKE', '%'.$search.'%')
            ->orWhere('city', 'LIKE', '%'.$search.'%')
            ->get();

        $data= [];
        foreach ($conferences as $key => $value){
            $data[] = ['id'=> $value->id, 'value' => $value->name . " " . $value->name];
        }
        return response($data);
    }
}

路线:

Route::get('/autocomplete-search', 'AutocompleteController@search');

jQuery的:

$("#search").autocomplete({
   source: "{{ URL::to('autocomplete-search') }}",
   minLength: 2,
   select:function(key, value)
   {
       console.log(value);
   }
});

搜索输入:

<div class="col col-md-6">
    <h4 class="text-white  text-center font-weight-bold">Search</h4>
    <form class="main-search">
        <input type="text" id="search" class="autocomplete dropdown-toggle" placeholder="Conference, Citiy, Category">
    </form>
</div>

对于第二个问题,当用户输入“Ne”时,会出现具有Citiy为“Newcastle”的会议标题。但应该出现的是具有“Ne”的城市的城市名称,例如“纽卡斯尔”。你知道如何实现这个目标吗?

1 个答案:

答案 0 :(得分:1)

第一个问题很容易解决:

// Change this line
$data[] = ['id'=> $value->id, 'value' => $value->name . " " . $value->name];

// into this
$data[] = ['id'=> $value->id, 'value' => $value->name];