2017-08-16 59 views
0

我一直在尋找類似的問題,但我找不到真正有助於解決問題的東西。Ajax獲取請求laravel 5.4資源控制器

使用Laravel 5.4。

所以我有一個資源控制器和它的索引方法,返回一個視圖與一些數據附加到它。 然後,我想從返回的視圖中發出一個ajax請求,這是一個搜索請求。

e.preventDefault(); 
     let q = $('#inputserver').val(); 
     $.ajaxSetup({ 
      headers: { 
       'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
      } 
     }); 
     $.ajax({ 
      url: "/servers", 
      type: 'GET', 
      data: {'data': q}, 
      success: function(response){ 
       console.log('Successo'); 
      } 
     }) 

,對於資源控制器的方法是如何組織應該調用索引方法,我想確定,如果我有一個Ajax請求的輸入。 如果我這樣做,我將使用Eloquent Model中的查詢搜索由搜索表單檢索的數據,當然,我只想顯示匹配的結果。

這是我的控制器代碼:

if(!$request->ajax()){ 
     $colonna = 'id'; 
     $servers = Server::orderBy($colonna, 'desc')->paginate(10); 
     return view('servers.index', array('servers' => $servers)); 
    } 
    else{ 
     $servers= Server::where('name', '=', $request->data)->paginate(10); 
     return view('servers.index', array('servers' => $servers)); 
    } 

的問題是,什麼也沒發生,所以Ajax請求是沒有考慮,有人可以幫我嗎?我幾乎可以肯定,這個問題是我忘記或沒有考慮的一些明顯的事情。 預先感謝您,如果您需要關於它的更多信息,我會進行編輯。

編輯:

這是路線我Route::resource('servers', 'ServerController');

EDIT2:

對不起IDS是意大利人,但我當然是正確的,當他們選擇使用jQuery。

<div class="input-group mb-2 mr-sm-2 mb-sm-0"> 
    <div class="input-group-addon"> 
      <span> 
      <i class="fa fa-search"></i> 
      </span> 
    </div> 
    {{Form::text('search', null, array('class' => 'form-control', 'id' => 'inputserver' , 'placeholder' => 'Cerca..'))}} 
    <span class="input-group-btn"> 
      <button class="btn btn-default" type="button" id="cercaserver">Go!</button> 
    </span> 

+0

編輯顯示它! –

+0

奇怪。你可以添加刀片ajax以及確保jquery被加載以及 –

+0

對不起,它花了一些時間來正確縮進:/ –

回答

0

刀片文件messy.Try創建一個表單打開,形成緊密,使類型的按鈕提交。並嘗試將您的AJAX更改爲:

$(document).ready(function() { 
    $('#cercaserver').on('submit', function (e) { 
     e.preventDefault(); 
     var input = $('#inputserver').val(); 

     $.ajax({ 
      type: "GET", 
      url: './servers', 
      data: {input: input}, 

     }); 
    }); 
}); 

確保您正在加載jquery。

+0

試過它,但仍然不工作,在控制器甚至沒有進入else語句是如果它是ajax請求,我希望它去。我做對了嗎? –

0

你什麼意思,什麼都沒有發生? ajax請求被觸發時,控制檯中顯示的內容是什麼?

此外,你正在返回一個視圖,你可能想返回一個json數組的結果?

return $servers;

Laravel將自動地將其轉換成JSON響應

https://laravel.com/docs/5.4/responses#creating-responses

或者,如果你想成爲具體:

return response()->json($servers);

https://laravel.com/docs/5.4/responses#json-responses

編輯: 我想我已經知道這個問題了,在你的資源控制器功能index中,有沒有一個叫做$request的參數?它可能不存在,並肯定會拋出500內部服務器錯誤,因爲你在你的條件下使用它。