用ajax laravel搜索

时间:2017-02-06 02:35:49

标签: ajax laravel

我需要我的项目有一个表单serach,然后我尝试使用此代码,但当我执行控制台时说POST http://localhost:8000/buscar 500 (Internal Server Error) 那么这是我的观点

<div id="qnimate" class="off">
    <div id="search" class="open">
        <button data-widget="remove" id="removeClass" class="closeSearch" type="button">×</button>
            <input type="text" placeholder="Buscar Noticias -  Articulos - Reviews"  id="buscar" onkeydown="keydownFunction()" onkeyup="keyupFunction()">
            <button class="btn btn-lg btn-site" type="submit"><span class="glyphicon glyphicon-search"></span> Buscar</button>
        <div id="resultadoBusqueda" class="col-md-12"></div>
    </div>
</div>

这是我的控制器

public function buscar()
    {
        $keywords = Input::get('keywords');
        $reviews = Reviews::where('estado','1')->take();
        $buscarReviews = new \Illuminate\Database\Eloquent\Collection();
        foreach ($reviews as $review) {
            if(Str::contains(Str::lover($review->nombre), Str::lover($keywords)))
                $buscarReviews->add($review);
        }
        return view::make('busqueda')->with('buscarReviews', $buscarReviews);
    }

这里是显示信息的视图

@foreach($buscarReviews as $review)
    <div id="reviews" class="col-md-12">
        <a href="/review/{{$review->slug}}" class="link"></a>
        <div class="col-md-4">
            <img src="Imagenes/{{$review->logo}}" width="50">
        </div>
        <div class="col-md-8">
            <h2>{{$review->nombre}}</h2>
            <div>{!! str_limit($review->descripcion, $limit = 150, $end = '...') !!}</div>
        </div>

    </div>
@endforeach

这是我的js

var timer;
  function keydownFunction(){
    timer = setTimeout(function(){
        var keywords = $('#buscar').val();

        if(keywords.length > 0){
          $.post('/buscar', {keywords: keywords}, function(markup){
            $('#resultadoBusqueda').html(markup);
          });
        }

    }, 500);
  }
  function keyupFunction(){
    clearTimeout(timer);
  }

我不知道是什么原因不打印重新获得的信息。 谢谢。

1 个答案:

答案 0 :(得分:0)

您正在从ajax发送帖子请求,但在您的控制器中,您正试图使用​​get获取该值,请尝试此代码

public function buscar(Request $request) { $keywords = $request->keywords; $reviews = Reviews::where('estado','1')->take(); $buscarReviews = new \Illuminate\Database\Eloquent\Collection(); foreach ($reviews as $review) { if(Str::contains(Str::lover($review->nombre), Str::lover($keywords))) $buscarReviews->add($review); } return view::make('busqueda')->with('buscarReviews', $buscarReviews); }

还记得像这样改变路线。

Route::post('buscar', 'yourController@buscar');