Как я могу опубликовать переменную в маршрут Laravel 5 из JavaScript? - PullRequest
1 голос
/ 02 мая 2019

Я пытаюсь отправить простой идентификатор уведомления из 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, но всегда получаю одну и ту же ошибку.

Любая помощь высоко ценится ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...