Laravel中的自动完成Ajax调用

时间:2018-09-26 22:07:55

标签: javascript php ajax laravel

HTML文件(使用Laravel的刀片):

            <div class="navbar-collapse collapse" id="bs-example-navbar-collapse-1">
                    <div class="input-group" id="search-form">
                        <span class="input-group-text" id="basic-addon1">Search:</span>
                        <input type="text" name="search" size="1" id="search-bar" class="form-control" aria-label="Username" aria-describedby="basic-addon1">
                        @if ( !empty($search) )
                            <ul>
                                @foreach ($search_query as $item)
                                        <li><a href="{{ url('shop/' . $item->url . '/' . $item->purl) }}">{{ $item->ptitle }}</a></li>
                                @endforeach
                            </ul>
                        @endif
                        <button class="btn input-group-text" id="submit-btn">Go!</button>
                    </div>

控制器内部的方法:

    public function search(Request $request){
    
        Product::autoComplete($request, self::$data);
        return self::$data;
    
      }

enter image description here

我遇到的问题是我无法进入@if (!empty($search)),尽管有一个变量$search包含来自Ajax调用的信息(如所附的屏幕截图所示)

最终目标是在搜索输入下方的div(类似于YouTube上的搜索栏)中向用户显示与他/她的搜索相匹配的所有字词。

这是其余的代码,尽管可以正常工作,如dd(self::$data)的屏幕截图所示:

型号:

 static public function autoComplete($request, &$data){
        if ( !empty( $request['search'] ) && is_string($request['search'])) {
  
            $search = trim(filter_var($request['search'], FILTER_SANITIZE_STRING));
            $search = strtoupper($search);
            
           
            
            if ($search) {
              
              $data['search'] = DB::table('products AS p')
              ->join('categories AS c', 'c.id', '=', 'p.categorie_id')
              ->select('ptitle', 'article', 'c.url', 'p.purl')
              ->where('ptitle', 'LIKE', '%' . $search . '%')
              ->orWhere('article', 'LIKE', '%' .$search . '%')
              ->get();
              
            }
            
          }
    }

网络路由器:

Route::get('search', 'PageController@search');

0 个答案:

没有答案