我正在开发一个项目,我应该使用 ajax 从 users
表中删除用户。我一直在寻找多种解决方案,但无论如何它根本行不通。这是我收到的错误:
Failed to load resource: the server responded with a status of 500 (Internal Server Error).
JS:
$('.btn-delete').click(function(){
var id = $(this).val();
$.ajax({
type: 'DELETE',
url: '/laravel-exercise/public/index/'+id,
success: function (data) {
console.log('Success:', data);
},
error: function (data) {
console.log('Error:', data);
}
});
});
查看:
<button class="btn btn-danger btn-delete"
value="{{$user->id}}" data-token="{{ csrf_token() }}">Delete</button>
路线:
Route::delete('index/{$id}', 'UsersController@destroy');
用户 Controller :
public function destroy($id)
{
$user = User::findOrFail($id);
$user->delete();
return view('pages.index')->with([
'flash_message' => 'The user has been deleted.',
'flash_message_important' => 'true',
]);
}
这里出了什么问题?
最佳答案
可能是由于 CSRF 保护。
在绑定(bind)按钮点击之前尝试添加'X-CSRF-TOKEN'
。
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$('.btn-delete').click(function(){
var id = $(this).val();
$.ajax({
type: 'DELETE',
url: '/laravel-exercise/public/index/'+id,
success: function (data) {
console.log('Success:', data);
},
error: function (data) {
console.log('Error:', data);
}
});
});
将 CSRF token 添加到您的请求中。
看看here有关信息。
路线已找到,否则我将捕获 404 异常。
编辑
看看您如何制作按钮,您还可以使用 post
请求,但传递 _method
数据。
HTML:
<button class="btn btn-danger btn-delete" value="{{$user->id}}"
data-token="{{ csrf_token() }}">Delete</button>
Javascript:
$('.btn-delete').click(function(){
var token = $(this).data('token');
var id = $(this).val();
$.ajax({
url: '/laravel-exercise/public/index/'+id,
type: 'post',
data: {_method: 'delete', _token :token},
success: function (data) {
console.log('Success:', data);
},
error: function (data) {
console.log('Error:', data);
}
});
});
关于javascript - Laravel5 ajax 删除不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40716637/