我正在尝试在 laravel 5.3 中使用 ajax 删除记录,我知道这是一个常见问题,并且已经有很多关于此主题的在线解决方案和教程。我尝试了其中一些,但大多数都给我同样的错误 NetworkError: 405 Method Not Allowed
。我试图从不同的角度来完成这项任务,但我被卡住了,找不到我错在哪里,这就是为什么我添加这个问题作为指导。
我正在尝试按照脚本删除记录。
Controller.php
public function destroy($id)
{ //For Deleting Users
$Users = new UserModel;
$Users = UserModel::find($id);
$Users->delete($id);
return response()->json([
'success' => 'Record has been deleted successfully!'
]);
}
Routes.php
Route::get('/user/delete/{id}', 'UserController@destroy');
在 View 中
<button class="deleteProduct" data-id="{{ $user->id }}" data-token="{{ csrf_token() }}" >Delete Task</button>
App.js
$(".deleteProduct").click(function(){
var id = $(this).data("id");
var token = $(this).data("token");
$.ajax(
{
url: "user/delete/"+id,
type: 'PUT',
dataType: "JSON",
data: {
"id": id,
"_method": 'DELETE',
"_token": token,
},
success: function ()
{
console.log("it Work");
}
});
console.log("It failed");
});
当我点击删除按钮时,它在控制台中返回错误 NetworkError: 405 Method Not Allowed
。没有 ajax 相同的删除功能工作正常。
任何人都可以指导我解决问题的错误,如果有人指导我,我将不胜感激。谢谢..
最佳答案
不要使用 Route::get
,而是使用 Route::delete
。
除此之外,将 ajax 调用中的 type: 'Put'
更改为 type: 'DELETE'
。
附言这段代码
$Users = new UserModel; // Totally useless line
$Users = UserModel::find($id); // Can chain this line with the next one
$Users->delete($id);
可以写成:
UserModel::find($id)->delete();
或者更短:
UserModel::destroy($id);
请记住 ->delete()
会触发一个事件,而 ::destroy()
不会。
关于php - 如何使用ajax请求删除laravel 5.3中的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39350918/