我想通过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">×</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){
}});
})
答案 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";
}
});
});