Я бы порекомендовал вместо рендеринга каждой кнопки удаления в виде единой формы, я бы предложил иметь одну функцию AJAX, которая принимает значение, которое вызывается кнопками (не представлениями формы) со значением данных.Например,
<button class="btn-delete" data-id="{{ $comment->id }}">Delete</button>
Вам не нужна форма, скрытое поле или токен CSRF.AJAX обрабатывает все остальное.
$('.btn-delete').on('click', function() {
var id = $(this).data('id'); // Gets the value from the data-id field
$.ajax({
url: urlDeleteComment, // I'm assuming you already have this set somewhere
method: 'POST',
data: 'comment_id='+id,
success: function(response) {
// ...
},
error: function(xhr) {
// ...
}
});
});
Это отправит запрос на сервер с идентификатором commend для нажатой кнопки.
Я бы также рекомендовал использовать функции успеха / ошибки, чтобы вы могли обработать сценарий, в котором удаление не удалось.(Например, комментарий уже удален или у вас нет прав на удаление этого комментария).
Что касается самого кода на стороне сервера, вы можете просто обрабатывать вещи как есть.Я бы рекомендовал возвращать 200, если все прошло хорошо, или ошибку 4xx / 5xx, чтобы можно было вызвать функцию ошибки AJAX, если что-то пойдет не так.
Что касается фактического удаления на экране.Я бы порекомендовал обернуть комментарий в div
идентификатором, который совпадает с идентификатором на кнопке удаления.Например:
<div class="comment" data-comment="{{ $comment->id}}">
<!-- Your comment here -->
<button class="btn-delete" data-id="{{ $comment->id }}">Delete</button>
</div>
Так что, когда вы хотите удалить комментарий с экрана, внутри вашего успешного вызова AJAX:
// ...
success: function(response) {
$('.comment[data-comment="' + id + '"]').slideUp();
}
// ...
Причина, по которой я предлагаюальтернатива, а не попытка исправить текущий метод подхода (который возможен) состоит в том, что существует много дополнительной работы / мусора, которая связана с отображением формы каждый раз при отображении кнопки.
Использование универсальногоВызовы AJAX, которые принимают параметр от нажатия кнопки, как правило, являются предпочтительным методом создания приложений такого стиля, поскольку они сокращают большую работу, требуемую не только для создания этого в первую очередь, но и для поддержания его в долгосрочной перспективе.