我正在尝试在 laravel 5.3 中使用 ajax 删除记录,我知道这是一个常见问题,并且已经有很多关于此主题的在线解决方案和教程。我尝试了其中一些,但大多数都给我同样的错误 NetworkError: 405 Method Not Allowed
。我试图从不同的角度来完成这项任务,但我被卡住了,找不到我错在哪里,这就是为什么我添加这个问题作为指导。
我正在尝试按照脚本删除记录。
控制器.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!'
]);
}
路线.php
Route::get('/user/delete/{id}', 'UserController@destroy');
在视图中
<button class="deleteProduct" data-id="{{ $user->id }}" data-token="{{ csrf_token() }}" >Delete Task</button>
应用程序.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 相同的删除功能工作正常。
任何人都可以指导我在哪里我可以解决这个问题,如果有人就此指导我,我将不胜感激。谢谢你..
原文由 Ayaz Ali Shah 发布,翻译遵循 CC BY-SA 4.0 许可协议
而不是使用
Route::get
使用Route::delete
。除此之外,在 ajax 调用中将 — 更改为
type: 'Put'
type: 'DELETE'
PS这段代码
可以写成:
或者更短:
请记住
->delete()
将触发事件,而::destroy()
则不会。