错误405(方法不允许)Laravel 5

我试图用jQuery做一个POST请求,但我得到一个错误405(方法不允许),我正在使用Laravel 5

这是我的代码:

jQuery的

 $(document).ready(function () { $('.delete').click(function (e){ e.preventDefault(); var row = $(this).parents('tr'); var id = row.data('id'); var form = $('#formDelete'); var url = form.attr('action').replace(':USER_ID', id); var data = form.serialize(); $.post(url, data, function (result){ alert(result); }); }); });  

HTML

 {!! Form::open(['route' => ['companiesDelete', ':USER_ID'], 'method' =>'DELETE', 'id' => 'formDelete']) !!} {!!Form::close() !!} 

调节器

 public function delete($id, \Request $request){ return $id; } 

Jquery错误是http://localhost/laravel5.1/public/empresas/eliminar/5 405(Method Not Allowed)。

url值是

 http://localhost/laravel5.1/public/empresas/eliminar/5 

而数据值是

 _method=DELETE&_token=pCETpf1jDT1rY615o62W0UK7hs3UnTNm1t0vmIRZ. 

如果我改为$.get请求它工作正常,但我想做一个post请求。

有人可以帮帮我吗?

谢谢。

编辑!!

路线

 Route::post('empresas/eliminar/{id}', ['as' => 'companiesDelete', 'uses' => 'CompaniesController@delete']); 

methodNotAllowedexception表示您请求的HTTP方法不存在路由。

您的表单设置为发出DELETE请求,因此您的路由需要使用Route::delete()来接收此请求。

 Route::delete('empresas/eliminar/{id}', [ 'as' => 'companiesDelete', 'uses' => 'CompaniesController@delete' ]); 

您的routes.php文件需要正确设置。

我假设您当前的设置如下:

 Route::post('/empresas/eliminar/{id}','CompanyController@companiesDelete'); 

或者其他的东西。 改为为delete方法定义路由。

 Route::delete('/empresas/eliminar/{id}','CompanyController@companiesDelete'); 

现在,如果您使用的是Route资源,则用于“DELETE”方法的默认路由名称为.destroy。 改为在该函数中定义删除逻辑。

如果您正在使用资源路由 ,那么在表单的HTML正文中,您可以使用method_field helper,如下所示:

 
{{ csrf_field() }} {{ method_field('PUT') }}

它将使用方法类型创建隐藏的表单输入,这与Laravel 5.5+正确交互。

从Laravel 5.6开始,您可以在模板中使用以下Blade指令:

 
@method('put') @csrf

希望这可能会帮助将来的某个人。