Ajax jquery.min.js:4 POST 500 (Внутренняя ошибка сервера) laravel 5
Я получил эту ошибку от вызова Ajax! это получить действие из флажка, а затем отправить данные Ajax в метод контроллера,
jquery.min.js:4 POST http://localhost:8000/listhotelregisration 500 (Internal Server Error)
Вот часть кода HTML:
<div style="display:block">
<div>My hotel Lists</div>
@foreach($myLists as $key => $val)
{{ $val['name'] }
{!! Form::checkbox($val['name'], $val['id'].','.$value['id']) !!} <br>
@endforeach
</div>
Аякс часть:
$(function() {
$("input[type='checkbox']").change(function() {
var smi = $(this).val();
// alert(smi);
$.ajax({
url: 'listhotelregisration',
type: "post",
data: {'checko':smi},
success: function(data){
//alert(data);
}
});
});
Часть маршрута:
Route::post('listhotelregisration', 'ListhotelController@create');
Контроллер часть:
public function create(Request $request)
{
$listhotel = new listhotel;
$data = $request->all();
$dataPrim = explode(",", $data);
$listhotel->id_list= $dataPrim[0];
$listhotel->id_hotel= $dataPrim[1];
$listhotel->save();
$response = "ok";
return response ()->json ($response);
}
2 ответа
Аякс в Ларавел 5
Это в основном связано с промежуточным программным обеспечением VerifyCSRFToken, которое laravel предоставляет нам "из коробки". Он отвечает на внутреннюю ошибку сервера (500), когда по нашим запросам происходит несоответствие токена.
Нам нужно отправить наш запрос AJAX с токеном, отправленным в наш браузер. Токен CSRF в основном хранится в метатеге, но вы можете поместить его в любое место
$.ajaxSetup
Установить значения по умолчанию для будущих запросов Ajax
Решение
$(document).ready(function(){
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
});
Надеюсь это поможет.
Ошибка 500 будет означать, что это ошибка сервера. Чтобы точно знать, что пошло не так, вам нужно проверить ответ сервера.
В любом случае я бы отрегулировал ваши следующие части:
Javascript:
$(function() {
$("input[type='checkbox']").change(function() {
var id_list = $(this).attr('id_list');
var id_hotel = $(this).attr('id_hotel');
$.ajax({
url: 'listhotelregisration',
type: "post",
data: {
'id_list': id_list,
'id_hotel':id_hotel
}
}
});
});
контроллер:
public function create(Request $request)
{
$data = $request->only(['id_list', 'id_hotel']);
$listhotel = listhotel::firstOrCreate($data)
return response ()->json ("OK");
}