我试图在laravel 5.3中使用Ajax删除记录,我知道这是一个常见问题,并且已经有很多关于此主题的在线解决方案和教程。我尝试了其中一些,但大多数都给了我同样的错误NetworkError: 405 Method Not Allowed。我试图以不同的角度来完成这项任务,但是我被卡住了,找不到我错了,这就是为什么我将此问题添加为指导原则。
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');
视野中
<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::getuse Route::delete。
Route::get
Route::delete
除此之外变化type: 'Put',以type: 'DELETE'在Ajax调用。
type: 'Put'
type: 'DELETE'
PS此代码
$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()不会。
->delete()
::destroy()