Я относительно новичок в Laravel. Я пытаюсь обновить столбец is_active в mysql, когда кнопка переключается без перезагрузки страницы. Каждая строка таблицы будет иметь кнопку. Я также пытаюсь отобразить всплывающее сообщение, когда кнопка переключается с тем же эффектом, что и модальное подтверждение подтверждения начальной загрузки.
То, что у меня есть до сих пор, заставляет работать кнопку переключения, но когда я попытался переключить кнопку, в базу данных не было внесено никаких изменений. Я думаю, должен ли я использовать форму для флажка
ОБНОВЛЕНО
Вот так выглядит моя кнопка в html
@foreach($system_functions as $function)
<input type="hidden" id="id_input" value="{{$function->id}}" >
@if($function->group_id == 1)
<tr>
<td>{!! $function->name !!}</td>
<td><input class="toggle_status" type="checkbox" @if($function->is_active) checked @endif id="is_active" name="is_active" value="on" data-toggle="toggle"></td>
</tr>
@endif
@endforeach
У меня также есть функция обновления в контроллере
public function update(Request $request, $id)
{
$function=SystemFunction::where('id',$id)->first();
if($request->get('is_active')==='on'){
$is_active=1;
} else{
$is_active=0;
}
$function->update([
'is_active' => $is_active
]);
return redirect('admin/system-functions')->with('status','SUCCESSFUL');
}
и я звоню по этому маршруту
Route::group(array('prefix' => 'admin', 'namespace' => 'Admin', 'middleware' => 'staff'), function () {
Route::post('/system-functions', 'SystemFunctionController@update')->name('system-functions');
}
и мой JS выглядит так на мой взгляд
@section('script')
<script type="text/javascript">
$(document).ajaxStop(function () {
$('.toggle_status').on('click', function (e) {
var is_checked = false
if ($(this).is(':checked')) {
is_checked = true;
}
$.ajax({
type: 'POST',
url: '{{ route('admin.system-functions') }}', // use proper route to system-functions here
async: true,
data: {
is_checked: is_checked,
id: {{ $function->id }}
},
success: function (result) {
alert('Toggle successfull'); // use proper alert message here
e.stopImmediatePropagation();
return false;
}
});
});
});
</script>
@endsection
ошибка консоли
ошибка консоли