来自ajax删除请求的间歇性405状态响应

时间:2019-03-13 18:49:19

标签: javascript ajax laravel

所以我有这些卡,用户可以单击删除按钮以删除卡。卡的ID会从表中删除卡ID或community_iduser_id。单击删除按钮时,它会向资源控制器(删除方法)发送ajax delete请求,该请求确实会从数据库中删除该行……有时。

这很奇怪,有时可以,有时返回405(方法不允许异常)。

代码如下:

查看:

            @foreach($communities as $community)
                <div class="col-md-3">
                    <div class="card communityCard">
                        <div class="loadingCard" loading>
                            <i class="loadingSpinner fas fa-circle-notch fa-spin"></i>
                        </div>

                        <div class="commandPanel">
                            <div class="commandPanelInterior">
                                @if($community->banned == 1)
                                    @php($community->description = "This community has been removed for violating our terms of service.")
                                @else
                                    <form class="form" action="/cad" method="GET">
                                        @csrf

                                        <input name="community_id" type="hidden" value="{{$community->id}}">

                                        <button type="submit" class="sideMenuButton hvr-grow btn-primary"><i class="fas fa-door-open"></i></button>
                                    </form>
                                @endif

                                @if($community->owner_id != Auth::user()->id)
                                    <button id="deleteCommunity{{$community->id}}" value="{{$community->id}}" type="submit" class="deleteCommunityButton sideMenuButton hvr-grow btn-danger"><i class="fas fa-trash"></i></button>
                                @endif
                            </div>
                        </div>

                        <div class="card-header">
                            <img class="communityIcon" src="/images/communityIcons/{{$community->icon_path}}">
                            <span class="communityName">{{$community->name}}</span>
                        </div>

                        <div class="card-body">
                            <span class="communityDescription">{{$community->description}}</span>
                        </div>

                        @if($community->banned == 0)
                            <div class="card-footer">
                                <span class="badge badge-light"><i class="fas fa-users"></i> {{$community->user_count}}</span>

                                @php($communityBadges = $community->badge_types)

                                @foreach($communityBadges as $badgeType)
                                    <span class="badge badge-primary" title="{{$badgeType->name}}">{!!$badgeType->badge_icon!!}</span>
                                @endforeach
                            </div>
                        @endif
                    </div>
                </div>
            @endforeach

Javascript:

        // Remove User From Community Ajax

        $('.deleteCommunityButton').click(function(event){
            var clickedBtn = "#" + (event.target.id);
            var community_id = $(event.target).val();

            $.ajaxSetup({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                }
            });

            $.ajax({
                type: "POST",
                cache: false,
                url: '/communitymembers/'+community_id,
                data: {
                    "id": community_id,
                    "_method": 'DELETE'
                },

                success: function(response) {
                    $(clickedBtn).parent().parent().parent().parent().remove();
                }
            });
        });

控制器:

    public function destroy($id)
    {
        $memberList = CommunityMemberList::where('user_id', Auth::user()->id)->where('community_id', $id)->first();

        $memberList->delete();

        return redirect('/home')->with('message', 'The community has been successfully removed from your account');;
    }

Web.php文件:

Route::get('/home', 'HomeController@index')->name('home');

错误(从控制台):

"message": "The DELETE method is not supported for this route. Supported methods: GET, HEAD, POST.",

谢谢:)

0 个答案:

没有答案