Ajax呼叫未到达Laravel控制器

时间:2019-10-22 17:05:46

标签: javascript jquery laravel

通过jquery单击<a>标签后,我试图更新数据库中的字段。

以下是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 个答案:

答案 0 :(得分:1)

问题似乎是您从ajax使用POST方法调用,但是在Laravel中,只有GET请求的路由。因此,您必须在方法:'GET'中更改方法:'POST'或Route: :进入Route :: post。

您还可以在浏览器的“网络”标签中检查错误。

答案 1 :(得分:1)

这是GET请求路线。 您需要POST请求的路由。

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

答案 2 :(得分:0)

在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'
]);