Я взял пример из Интернета о работе 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 С СООБЩЕНИЕМ
[быстрая проверка] перейдите к инструментам разработчика вашего браузера, затем вкладку Network, обновите свою страницу, протестируйте свой код, проверьте там результат ответа (вы должны найти сведения об ошибке laravel), затем предоставьте здесь то, что у вас есть
Проверьте ответ на вкладке Сеть инструментов разработчика. Должно быть более подробное сообщение об ошибке.
Он говорит: 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
Проверьте, действительно ли '{{ csrf_token() }}' производит токен CSRF.
да. Он производит csrf_token
Не могли бы вы проверить запрос, содержит ли тело HTTP-метода какие-либо параметры? Или ты искал p :D
Да, я искал п
@JaydeepRajgor измените метод публикации и установите заголовок как { 'x-csrf-token' : {{ csrf_token }} }
@AdityaThakur Все еще не работает.
@JaydeepRajgor Перейдите в «Параметры разработчика», затем нажмите вкладку «Сеть», затем нажмите «Ответить». дайте нам знать, что ошибка.






Попробуй это
<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]);
}
Комментарии не для расширенного обсуждения; этот разговор был перешел в чат.
Проблема в том, что БД не импортирована. Так что просто напишите
use DB;
в контроллере
Первое, что вы всегда делаете, когда получаете внутреннюю ошибку сервера, — это проверяете журналы ошибок сервера.