通过确认消息模式删除laravel?

时间:2016-06-11 14:56:44

标签: javascript php jquery ajax laravel

我想通过jquery在路线上使用我的网址删除一些东西,我有这个,但是我不知道为什么

routes.php文件

Route::delete('/administrar/invitacion/{id}', 'invitacionController@eliminarInvitacion');

在我的administrar.blade.php我有一个选择我在哪里检索id和这个模式有两个按钮

<!-- Modal borrar -->
                                                <div class="modal fade" id="borrar" role="dialog">
                                                    <div class="modal-dialog">
                                                        <!-- Modal content-->
                                                        <div class="modal-content">
                                                            <div class="modal-header">
                                                                <button type="button" class="close" data-dismiss="modal">&times;</button>
                                                                <h4 class="modal-title">Borrar invitación</h4>
                                                            </div>
                                                            <div class="modal-body">
                                                                <p>¿Estás seguro que quieres cancelar esta invitación?</p>
                                                            </div>
                                                            <div class="modal-footer">
                                                                <button type="button" id="delete_invite" class="btn btn-warning" data-dismiss="modal">Si</button>
                                                                <button type="button" class="btn btn-default" data-dismiss="modal">No</button>
                                                            </div>
                                                        </div>
                                                    </div>
                                                </div>

invitacionController.php

public function eliminarInvitacion(Request $request, Invite $invite)
    {
        $this->authorize('destroy', $invite);

        $invite->delete();

        return redirect('/administrar');
    }

在我的js上:

  $('#borrar').on('click', '#delete_invite', function(e) {

        $id = $( "#selectinv option:selected" ).val();
        $.ajax({url: "/administrar/invitacion/"+$id, type: 'DELETE', success: function(result){


        }});
    })

2 个答案:

答案 0 :(得分:0)

这不起作用,因为您使用Route::delete并且您没有发布CSRF令牌。要使其发挥作用,您必须将路线更改为Route::get,或发布CSRF令牌。

要详细了解详情,请参阅https://laravel.com/docs/master/routing#csrf-protection

此外,如果你不知道为什么ajax调用不起作用,打开你的控制台,然后点击“网络”选项卡,然后执行你的ajax请求。请求将显示在底部,然后如果单击它,您可以获取详细信息。

答案 1 :(得分:0)

在没有表单的情况下删除,只需在我的按钮

之前添加它
<input type="hidden" id="token" name="_token" value="{{ csrf_token() }}">

然后在js我的例子:

$('#borrar').on('click', '#delete_invite', function(e) {
    //Declaration
    var token = $('#token').val();
    var id = $( "#selectinv option:selected" ).val();

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

    //Delete request
    $.ajax({
        type:   'DELETE',
        url:    '/administrar/invitacion/' + id,
        data:   { _token :token },
        success: function(data){
             window.location="/administrar";
        }
    });

});