实施Laravel / AJAX搜索栏

时间:2017-01-20 19:42:46

标签: php ajax laravel searchbar

您好我可以进行标准的AJAX / PHP搜索,但发现很难转换为Laravel。我正在使用按键而不是按钮点击。我不确定这是否是正确实现ajax / laravel搜索栏的正确方法。我希望将数据库数据输出到视图页面中的div,但需要帮助才能解决这个问题。如果有人认为我做错了,请告诉我。总是愿意学习新代码。

控制器:

<?php

namespace App\Http\Controllers;

use App\Patient;

use DB;

use Illuminate\Http\Request;

class PatientController extends Controller
{


public function search(Request $request) {
    // get the search term
    $text = $request->input('text');

    // search the members table
    $patients = DB::table('patients')->where('firstname', 'Like', $text)->get();


    // return the results
    return response()->json($patients);
}

}  

路线:

Route::get('search', 'PatientController@search');

查看:

   @extends('Layout.master')


@section('content')


  <!-- Ajax code -->

       <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>


    <script type="application/javascript">
    $(document).ready(function(){

        $('#txtSearch').on('keyup', function(){

            var text = $('#txtSearch').val();

            $.ajax({

                type:"GET",
                url: '127.0.0.1:8000/search',
                data: {text: $('#txtSearch').val()},
                success: function(data) {

                    console.log(data);

                 }



            });


        });

    });
    </script>

    <div style="margin-top:70px;"></div>


       @include('partials._side')

    <div class="container">

                     <form method="get" action="">

                    <div class="input-group stylish-input-group">
                        <input type="text" id="txtSearch" name="txtSearch" class="form-control"  placeholder="Search..." >
                        <span class="input-group-addon">
                            <button type="submit">
                                <span class="glyphicon glyphicon-search"></span>
                            </button>  
                        </span>
                    </div>

                     </form> 


          <div id="result"></div>

</div>

@endsection

3 个答案:

答案 0 :(得分:1)

AJAX请求更改中

'127.0.0.1:8000/search'

'/search'

我建议您使用jQuery Autocomplete

很容易设置。

Check out the API documentation.

答案 1 :(得分:1)

取决于您的Laravel版本(新版本使用此版本):

use Illuminate\Http\Request;

public function search(Request $request) {
    $text = $request->input('text');

    $patients = DB::table('patients')->where('firstname', 'Like', "$text")->get();

    return response()->json($patients);
}

然后在javascript中:

$(document).ready(function(){

    $('#txtSearch').on('keyup', function(){

        var text = $('#txtSearch').val();

        $.ajax({

            type:"GET",
            url: 'search',
            data: {text: $('#txtSearch').val()},
            success: function(response) {
                 response = JSON.parse(response);
                 for (var patient of response) {
                     console.log(patient);
                 }
             }



        });


    });

});

https://laravel.com/docs/5.1/requests#retrieving-input

答案 2 :(得分:0)

如果您的意思是在浏览器中处理结果,请检查使用jQuery编码的AJAX,&#34;响应&#34;变量是服务器返回数据。 您只需在AJAX完成后将返回的数据填充到您的页面中。

例如放入

<div id="searchResult"></div>

在使用jquery回复之后,你需要将下面放在你的ajax中:

$("#searchResult").html(response);