2017-08-16 7 views
0

私はしばらくの間、同様の質問を探していましたが、実際に私の問題を助けるものは見つかりませんでした。 Laravel 5.4を使用してAJAXのリクエストlaravel 5.4リソースコントローラ

だから私は、リソースコントローラとそれに接続されているいくつかのデータを持つビューを返し、インデックスメソッドを持っています。 次に、検索リクエストである返されたビューからajaxリクエストを作成します。リソースコントローラのメソッドが構成されている方法のために、私は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'); 
      } 
     }) 

。 私は、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リクエストであっても考慮されていない、誰かがこれで私を助けることができますか?問題は、忘れてしまった、または考えていないことが明らかであることはほとんど確信しています。 ありがとうございました。もしあなたがそれについてもっと詳しい情報が必要なら、私は編集します。

EDIT:

これは私が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

コントローラでは試しても動作しません。私はそれがアヤックスのリクエストであればどこに行きたいのですか。私はそうしていますか? –

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の内部サーバーエラーがスローされます。

関連する問題