2016-05-18 44 views
3

ビューからライブサーチを作成していますが、ヘッダが投稿後にデータを送信しているように見せても、なぜレスポンスデータが利用できないのか不思議です。私の検索バーには、テンプレート/ reports.blade.phpである:Ajax Live Searchの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のスクリプトはこれです:私のコントローラは、このですが

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

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

私のルートはこれです:

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

    } 

ご覧のとおり、

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

しかし、いくつかの理由で、私のreports.blade.phpの内側に追加していないようです:単純なループであるテンプレート/ searchUsers.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

関連する問題