Я пытаюсь отправить простой идентификатор уведомления из javascript по клику, чтобы пометить уведомление как прочитанное.
Я потратил часы на это, но я получаю бесконечную ошибку 500 сервера
«Метод GET не поддерживается для этого маршрута. Поддерживаемые методы: POST.»
Может кто-нибудь объяснить, что я делаю неправильно ???
Форма в моем клинке выглядит так
<form method="POST" action="{{ route('markAsRead', $notification->id) }}">
@csrf
<button type="submit" class="btn read-notification unread" id="notificationIcon-{{ $notification->id }}">
<i class="fas fa-envelope fa-2x"></i></br>
<small>Mark as read</small>
</button>
</form>
Мой JavaScript выглядит так
$(".read-notification").on("click", function (e) {
if ($(this).hasClass('unread')) {
var mainDiv = $(this).closest(".notification");
var divId = $(mainDiv).attr("id");
var notificationId = divId.replace("notification-", "");
document.getElementById("notificationIcon-"+notificationId).innerHTML = "<i class=\"far fa-envelope-open fa-2x\"></i>";
$(this).removeClass('unread');
$(this).addClass('read');
$('.collapse').collapse('toggle');
$.ajax({
type: 'post',
url: 'markAsRead',
data: {'notificationId' : notificationId},
dataType: 'json',
success: function(response){
console.log("That worked!");
},
error: function(jqXHR, textStatus, errorThrown) {
console.log("AJAX error: " + textStatus + ' : ' + errorThrown);
}
});
// $(".read-notification").attr("action", "/" + notificationId + "/markAsRead");
}
})
Мой маршрут такой
Route::post('markAsRead', 'NotificationController@markAsRead');
и мой контроллер вот так
public function markAsRead(Request $request) {
$user = \Auth::user();
$notification = $user->notifications()->where('id', $request->notificationId)->first();
if ($notification) {
$notification->markAsRead();
return back();
} else {
return back()->withErrors('Sorry, we had a problem');
}
}
но в данный момент я не могу пройти маршрут.
Я пробовал именованные маршруты и URL, но всегда получаю одну и ту же ошибку.
Любая помощь высоко ценится ...