2017-02-06 77 views
1

我需要我的項目有一個表格檢索算法,那我就用這個代碼,但是當我執行控制檯說POST http://localhost:8000/buscar 500 (Internal Server Error) 那麼這裏是我的看法搜索與阿賈克斯laravel

<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); 
    } 

我不知道是什麼原因不打印查詢的信息。 謝謝。

+0

當你得到500狀態碼,你可以看到在日誌文件中詳細的錯誤輸出(在存儲文件夾)。您也可以將APP_DEBUG設置爲true以查看瀏覽器中的錯誤 –

+0

錯誤來自您的控制器。確保你在你的控制器中包含了'Input','Reviews'和'Str'。您也可以檢查瀏覽器控制檯以查看實際錯誤。 – EddyTheDove

+0

我檢查控制檯,我發現說這個'jquery-1.12.4.js:10254',我檢查並說'xhr.send((options.hasContent && options.data)|| null);' – sittelle

回答

0

您從阿賈克斯發送POST請求,但在你的控制器,你正設法利用獲取價值,試試這個代碼

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', '[email protected]');

+0

是的,我試過了但仍然得到'http:// localhost:8000/buscar 500(內部服務器錯誤)jquery-1.12.4.js:10254'我不知道爲什麼 – sittelle

+0

你能寫你現在的代碼嗎? –