我正在尝试用jQuery做一个POST请求,但是我得到了一个错误405 (不允许使用方法),我正在使用Laravel 5
THis是我的代码:
jQuery
<script type="text/javascript">
$(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);
});
});
});
</script>
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 (不允许使用方法)。
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']);
发布于 2015-07-25 12:19:38
methodNotAllowed
异常表明您正在请求的HTTP方法不存在路由。
您的表单设置为发出DELETE
请求,因此您的路由需要使用Route::delete()
来接收此请求。
Route::delete('empresas/eliminar/{id}', [
'as' => 'companiesDelete',
'uses' => 'CompaniesController@delete'
]);
发布于 2015-07-25 12:36:53
您的routes.php文件需要正确设置。
我假设您当前的设置是这样的:
Route::post('/empresas/eliminar/{id}','CompanyController@companiesDelete');
或者别的什么。而是为delete方法定义一个路由。
Route::delete('/empresas/eliminar/{id}','CompanyController@companiesDelete');
现在,如果您正在使用路由资源,则用于'DELETE‘方法的默认路由名称为.destroy。改为在该函数中定义您的删除逻辑。
发布于 2019-06-26 02:15:13
这可能对某些人有帮助,所以我也会把我的输入放在这里。
我也遇到过同样(或类似)的问题。显然,问题是POST请求被Modsec通过以下规则阻止: 350147,340147,340148,350148
在阻塞请求之后,我被重定向到相同的端点,但当然是作为一个GET请求,因此也就是405。
我把这些规则列入了白名单,瞧,405错误已经消失了。
希望这对某些人有帮助。
https://stackoverflow.com/questions/31622818
复制相似问题