Я никогда раньше не использовал ajax, но в моем текущем проекте я вижу необходимость в этом.У меня есть таблица счетов, в которой есть поле с именем «is_confirmed», которое по умолчанию установлено в false.
В файле index.blade.php я отобразил все счета, которые были отправлены зарегистрированным пользователем.В каждой строке таблицы, когда пользователь нажимает кнопку подтверждения, эта строка обновляется, и в поле «is_confirmed» устанавливается значение «true» в базе данных.Проблема теперь в том, что у них все еще есть активная кнопка подтверждения, что означает, что пользователь все еще может нажать ее.
Как бы вы реализовали это так, чтобы во всех строках, в поле «is_confirmed» которых было установлено значение «true», были отключены кнопки, а в тех строках, в поле «is_confirmed» которых установлено значение «false», были единственные кнопки, для которых нажата даже кнопка?при обновлении страницы.
Вот отображаемая таблица:
Вот мой index.blade.php, который в настоящее время отображает все отправленные счета.Наряду с кнопкой подтверждения для обновления поля базы данных «is_confirmed» в каждой строке:
@section('content')
@foreach($sentinvoices as $sentinvoice)
<tr>
<td>
<span>{{ $sentinvoice->recipient->fullname }}</span>
</td>
<td>
<span>{{$sentinvoice->updated_at->format("M d, Y")}}</span>
</td>
<td>
<span>{{$sentinvoice->status}}</span>
</td>
<td>
<span>{{$sentinvoice->amount}}</span>
</td>
<td class="text-center">
<form method="POST" action="{{ route('sender.confirm', $sentinvoice->uuid) }}" id="ajax">
@csrf
<input type="hidden" name="sender_id" value="{{$sentinvoice->sender_id}}">
<input type="hidden" name="is_confirmed" value="{{$sentinvoice->is_confirmed}}">
<button class="btn btn-success btn-sm" type="submit" id="confirm">Confirm</button>
</form>
</td>
</tr>
@endforeach
@ endsection
Я также добавил функцию ajax внизу index.blade.php какследующим образом:
@section('scripts')
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$("#ajax").click(function(event) {
event.preventDefault();
$.ajax({
type: "post",
url: "{{ url('sender.confirm') }}",
dataType: "json",
data: $('#ajax').serialize(),
success: function(data){
alert("Data Save: " + data);
$("#confirm").prop('disabled', true);
},
error: function(data){
alert("Error")
}
});
});
</script>
@endsection
Вот моя функция в InvoiceController, который выполняет отправку формы:
public function confirmInvoice(Request $request, $uuid)
{
$user = auth()->user();
$sentinvoices = Invoice::where('uuid', $uuid)->first();
$sentinvoices->sender_id = $user->id;
$sentinvoices->is_confirmed = 1;
$sentinvoices->save();
return redirect()->back();
}
Я проверил ответы на другие подобные вопросы, но я не смог заставить это работать,Пожалуйста, помогите мне здесь.