Поиск в реальном времени с использованием Ajax и получение ошибки «500 (Internal Server Error)» на Laravel 5.8 - PullRequest
1 голос
/ 13 апреля 2019

Я следовал учебнику по Live Search, используя ajax на Laravel, но в реализации я получаю error :

GET http://localhost:8000/search?search=k 500 (внутренняя ошибка сервера)

Я следовал этому уроку 3 раза, но всегда получаю эту ошибку. Я изменил так:

<!DOCTYPE html>
<html>
    <head>
        <meta name="_token" content="{{ csrf_token() }}"> 
        <title>Live Search</title>
        <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
    </head>
    <body>
        <div class="container">
            <div class="row">
                <div class="panel panel-default">
                    <div class="panel-heading">
                        <h3>Products info </h3>
                    </div>
                    <div class="panel-body">
                        <div class="form-group">
                            <input type="text" class="form-controller" id="search" name="search">
                            <input type="hidden" name="_method" value="POST">
                            <input type="hidden" name="_token" value="{{ csrf_token() }}">
                        </div>
                        <table class="table table-bordered table-hover">
                            <thead>
                                <tr>
                                  <th>ID</th>
                                  <th>Product Name</th>
                                  <th>Description</th>
                                  <th>Price</th>
                                </tr>
                            </thead>
                            <tbody>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>

        <script type="text/javascript">
            $('#search').on('keyup',function() {
                $value=$(this).val();
                $.ajax({
                    type : 'get',
                    url : '{{URL::to('search')}}',
                    data:{'search':$value},
                    success:function(data){
                        $('tbody').html(data);
                    }
                });
            });
        </script>

        <script type="text/javascript">
            $.ajaxSetup({ headers: { 'csrftoken' : '{{ csrf_token() }}' } });
        </script>
    </body>
</html>

мой контроллер:

public function search(Request $request)
{
    if($request->ajax()) {
        $output="";
        $products=DB::table('products')->where('title','LIKE','%'.$request->search."%")->get();
        if($products) {
            foreach ($products as $key => $product) {
                $output.='<tr>'.
                  '<td>'.$product->id.'</td>'.
                  '<td>'.$product->title.'</td>'.
                  '<td>'.$product->description.'</td>'.
                  '<td>'.$product->price.'</td>'.
                '</tr>';
            }
            return Response($output);
        }
    }
}

Я пробовал этот код для 3 разных баз данных и всегда получал одну и ту же ошибку 500.

Ответы [ 2 ]

1 голос
/ 13 апреля 2019

вам нужно declare variable в Jquery/Javascript, как показано ниже:

 var value=$(this).val();

и передать это variable, как показано ниже в ajax:

data:{'search':value}

Изменить вышеуказанные строки, должно работать!

1 голос
/ 13 апреля 2019

У вас есть вызов ajax с использованием метода get, поэтому сначала проверьте файл маршрута.

Я думаю, что вы вызываете search метод с использованием метода post.

Также в коде ajax по умолчанию используется метод get

Вы должны указать: method : post

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...