错误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']);
methodNotAllowed
exception表示您请求的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,如下所示:
它将使用方法类型创建隐藏的表单输入,这与Laravel 5.5+正确交互。
从Laravel 5.6开始,您可以在模板中使用以下Blade指令:
希望这可能会帮助将来的某个人。