AJAX не удалось загрузить сервер со статусом 500

Я взял пример из Интернета о работе laravel с ajax. Но это дает мне внутреннюю ошибку сервера 500:

jquery.min.js:4 GET 127.0.0.1:8000/search?search=p 500 (Internal Server Error) send @ jquery.min.js:4 ajax @ jquery.min.js:4 (anonymous) @ (index):39 dispatch @ jquery.min.js:3 r.handle @ jquery.min.js:3

Это код для контроллера с именем SearchController.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class SearchController extends Controller
{
    public function index()
    {
        return view('search.search');
    }

    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);
            }
        }   
    }
}

Код в web.php

Route::get('/','SearchController@index');
Route::get('/search','SearchController@search');

Код блейд-файла

<!DOCTYPE html>
<html>
    <head>
        <meta id = "token" 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>
                    </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>

Он должен отображать запись при нажатии клавиши, но выдает ошибку 500 внутренняя ошибка сервера.

Скриншот с методом GET ОШИБКА AJAX С ПОЛУЧИТЬ

Скриншот с методом POST ОШИБКА AJAX С СООБЩЕНИЕМ

Первое, что вы всегда делаете, когда получаете внутреннюю ошибку сервера, — это проверяете журналы ошибок сервера.

04FS 31.05.2019 11:34

[быстрая проверка] перейдите к инструментам разработчика вашего браузера, затем вкладку Network, обновите свою страницу, протестируйте свой код, проверьте там результат ответа (вы должны найти сведения об ошибке laravel), затем предоставьте здесь то, что у вас есть

4givN 31.05.2019 11:37

Проверьте ответ на вкладке Сеть инструментов разработчика. Должно быть более подробное сообщение об ошибке.

liqSTAR 31.05.2019 11:38

Он говорит: jquery.min.js:4 GET 127.0.0.1:8000/поиск?поиск=p 500 (внутренняя ошибка сервера) send @ jquery.min.js:4 ajax @ jquery.min.js:4 (анонимно) @ (index):39 dispatch @ jquery.min. js:3 r.handle @ jquery.min.js:3

Jaydeep Rajgor 31.05.2019 11:40

Проверьте, действительно ли '{{ csrf_token() }}' производит токен CSRF.

Ropali Munshi 31.05.2019 11:41

да. Он производит csrf_token

Jaydeep Rajgor 31.05.2019 11:42

Не могли бы вы проверить запрос, содержит ли тело HTTP-метода какие-либо параметры? Или ты искал p :D

liqSTAR 31.05.2019 11:43

Да, я искал п

Jaydeep Rajgor 31.05.2019 11:45

@JaydeepRajgor измените метод публикации и установите заголовок как { 'x-csrf-token' : {{ csrf_token }} }

Aditya Thakur 31.05.2019 11:46

@AdityaThakur Все еще не работает.

Jaydeep Rajgor 31.05.2019 11:53

@JaydeepRajgor Перейдите в «Параметры разработчика», затем нажмите вкладку «Сеть», затем нажмите «Ответить». дайте нам знать, что ошибка.

Aditya Thakur 31.05.2019 11:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
11
2 091
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуй это

  <script type = "text/javascript">
    $('#search').on('keyup',function(){
    value=$(this).val();
    $.ajaxSetup({
      headers: {
            'X-CSRF-TOKEN': $('meta[name = "_token"]').attr('content')
      }
    });
    $.ajax({
        url : '{{ url('search') }}',
        method : 'POST',
        data:{'search': value},
        success:function(response){
          console.info(response.data)
        }
      });
    })
    </script>

твой маршрут

Route::post('/search','SearchController@search');

и в вашем контроллере проверьте

public function search(Request $request)
{ 
 $products=DB::table('products')->where('title','LIKE','%'.$request->search."%")->get();
 return response()->json(['data' => $products]);
}

Комментарии не для расширенного обсуждения; этот разговор был перешел в чат.

Samuel Liew 31.05.2019 14:28
Ответ принят как подходящий

Проблема в том, что БД не импортирована. Так что просто напишите

use DB;

в контроллере

Другие вопросы по теме