Ajax-вызов не достигает контроллера Laravel - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь обновить поле в БД после нажатия на тег <a> с помощью jquery.

Ниже приведен HTML-код:

<a href="#" onclick="removeNumber()" id="notif-rmv" name="notif-rmv" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">

            <span  class="glyphicon glyphicon-globe"></span>Notifications <span class="badge">{{count(auth()->user()->notifics)}}</span></a>

Код Jquery:

$('#notif-rmv').on('click', function () {
    $.ajax({
            method: 'POST',
            url: notRmv,
            data: { _token: token}
        })

    .done(function () {

        });
});

маршрут и скрипт маршрута:

<script>
        var token = '{{ Session::token() }}';
        var notRmv = '{{ route('not.rmv') }}';
</script>

Route::get('/notrmv', [
    'uses' => 'PostController@notif_read_bdg',
    'as' => 'not.rmv'
]);

И в контроллере есть оператор обновления, который не был достигнут через jquery и не запущен.

    public function notif_read_bdg()
    {

        $user = Auth::user();
               $u_id = $user->id;

DB::table('notifs')->where('rec_uid', $u_id)->update(['badge_read' => 1]);
}

Я подозреваю, что в коде Jquery есть проблема, поскольку я не очень хорош в этом, поэтому, пожалуйста, дайте мне знать, если есть проблема в коде jquery?

Ответы [ 3 ]

1 голос
/ 22 октября 2019

Это GET запрос маршрута. Вам нужен маршрут для POST-запроса.

Route::post('/notrmv', [
    'uses' => 'PostController@notif_read_bdg',
    'as' => 'not.rmv'
]);
1 голос
/ 22 октября 2019

Кажется, проблема в том, что вы вызываете метод POST из ajax, но в Laravel у вас есть только маршрут для GET-запроса. Поэтому вам нужно изменить метод: 'POST' в методе: 'GET' или Route:: get in Route :: post.

Также вы можете проверить ошибки на вкладке сети в вашем браузере.

0 голосов
/ 22 октября 2019

В своем коде ajax вы говорите jquery сделать запрос как запрос POST, но ваш маршрут определен как запрос GET. По соглашению, если вы обновляете ресурс, вы должны использовать PUT или PATCH в обоих местах. Я обычно использую PATCH только потому, что это больше похоже на «обновление»

Ajax-вызов следующим образом

$.ajax({
    method: 'PATCH',
    url: notRmv,
    data: { _token: token}
}).done(function () {

});

И ваш маршрут

Route::patch('/notrmv', [
    'uses' => 'PostController@notif_read_bdg',
    'as' => 'not.rmv'
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...