2016-05-18 42 views
3

我創建一個視圖的實時搜索,我想知道爲什麼我得到一個無響應數據可用,即使標題顯示它發送後的數據。我的搜索欄模板/ reports.blade.php:阿賈克斯實時搜索張貼到Laravel視圖

  <div class="large-6 columns"> 
      <input type="text" id="search-input" onkeyup="searchup()" onkeydown="searchdown()" placeholder="Search Recipient"></div> 
      <div id="search-results"></div> 

JS腳本是這樣的:

var timer; 
function searchup() { 
timer = setTimeout(function() 
{ 
    var keywords = $('#search-input').val(); 
    if (keywords.length > 0) 
    { 
     $.post('/reports/executeSearch', {keywords: keywords}, function(markup) 
     { 
      $('#search-results').html(markup); 
     }); 
    } 
}, 500); 
} 

function searchdown() 
{ 
    clearTimeout(timer); 
} 

我的路線是這樣的:

Route::group(['middleware' => ['web']], function() { 
    Route::resource('reports', 'ReportsController'); 
    Route::post('reports/executeSearch', ['uses' => '[email protected]']); 
    }); 

雖然我的控制器是這樣的:

public function index() 
    { 
     // get all the reports 
     $reports = Reports::all(); 

     // load the view and pass the reports 
     return View::make('templates.reports') 
      ->with('reports', $reports); 
    } 

    public function search(Request $keyword) 
    { 
     $searchUsers = Recipients::where("name", "iLIKE", "%{$keyword->get('keywords')}%"); 
     return View::make('templates.searchUsers')->with('searchUsers', $searchUsers); 

    } 

正如你所看到的,它發送數據模板/ searchUsers.blade.php這是一個簡單的循環:

@foreach($searchUsers as $key => $value) 
    <b>{{ $value->name }}</b> 
    <br> 
@endforeach 

但由於某些原因,它似乎並沒有給我reports.blade.php內追加。我只是通過js插入它?

+0

使用'.fail()'用於錯誤處理。您的請求可能以非200狀態返回。 – itachi

+0

這是一個200 OK狀態。這是什麼意思? – Odinovsky

+0

你能看到開發人員工具欄(Chrome中)或Firefox中的響應嗎? – itachi

回答

4

我認爲這是因爲您沒有從get()獲取查詢生成器的集合。

嘗試:

$searchUsers = Recipients::where("name", "iLIKE", "%{$keyword->get('keywords')}%")->get(); 
+1

我忘了包括那..感謝您的注意。 :) – Odinovsky