2017-11-05 19 views
0
<form method="post" action="{{route('searchName')}}" class="form-horizontal" id="formSearch"> 
        <span class="input-group-btn"> 
         <input type="text" name="contactname" id="txtSearch" class="form-control text-right"/> 
         <button class="btn btn-info pull-right" id="btnSearch" type="submit"> 
          <i class="glyphicon glyphicon-search">Search</i> </button> 
        </span> 
       </form> 

以上がindex.blade.phpに私のフォームで、その後、私は怒鳴るアヤックスとして持つようにする方法:テキストボックスを使用してLaravelでアヤックス検索を使用し、ボタン

$('#formSearch').on('submit',function (e) { 
    e.preventDefault(); 
    var name = $('#txtSearch').val(); 
    var url = $('#formSearch').attr('action'); 
    $.get({ 
     url: url, 
     data: name, 
     success: function (datas) { 
      console.log(datas); 
     } 
    }) 
}) 

と私のコントローラで私が持っている:場合あなたは連絡先がその中に充填可能と私のモデルの名前で、不思議に思っている:

Route::get('/student/search','[email protected]')->name('searchName'); 

public function searchNames(Request $request) { 
    if($request->ajax()) { 
     $contact = Contact::find($request->name); 
     $gotyou = DB::select("SELECT id FROM contacts WHERE name = '$contact'"); 
     return response($gotyou); 
    } 
} 

とルートで

私は私のコンソールでundefiendになる、私は私の問題は私が同時に取得し、投稿を使用することはできないと思う!テキストボックス内にテキストを投稿し、その名前でデータベースを検索し、その名前のレコードを返すことができます。

+0

POSTを使用するだけで、GETでデータを送信することはできません。 – WilomGfx

+0

@Wiもポストを使いましたが、まだ何もありません。投稿を使うと、テキストボックスに何を入力したのかがわかります!! –

+0

意味がありません、あなたの質問はあなたが送った名前の文字列ではなく 'id'を送るべきです。 – WilomGfx

答えて

0

ここではいくつかの問題が...ちょうどあなたが正しい方向に向かっ取得したい...

まず、あなたのルート::ルートである必要があり得る::この場合、ポスト...

あなたのコントローラ機能のリファクタリングのためのいくつかの方向性...私はあなたがLaravelのドキュメント全体を読むことをお勧めします...それは素晴らしいです、あなたには1時間ほどしかかかりません...あなたはそれからたくさん学ぶでしょう...

public function searchNames(Request $request) { 
    if($request->ajax()) { 
     $contact = Contact::find($request->name); 
     // $contact is actually an instance of the Contact model, not a name 
     //$gotyou = DB::select("SELECT id FROM contacts WHERE name = '$contact->name'"); 
     // if you want to get a single value and not a collection, use ->value() 
     $gotyou = DB::table('contacts')->where('name', $contact->name)->value('id'); 
     return response($gotyou); 
    } 
} 
0
$('#formSearch').on('submit',function (e) { 
    e.preventDefault(); 
    var name = $('#txtSearch').val(); 
    var url = $('#formSearch').attr('action'); 
    var post = $('#formSearch').attr('method'); 
    $.ajax({ 
     headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}, 
     type: post, 
     url: url, 
     data: {name:name}, 
     success: function (data) { 
      alert(data[0]); 
     } 
    }) 
}) 

問題が修正され、コントローラでデータを取得できる $variable = $_POST['name']nameを使用してテキストボックスデータを渡したことを思い出してください。コードは上記のとおりです。$ _POST ['name']で取得するとreturn response($variable)となります。検索の結果を戻す。

関連する問題