首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >错误405 (不允许使用方法) Laravel 5

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

Stack Overflow用户
提问于 2015-07-25 12:08:46
回答 6查看 184.8K关注 0票数 41

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

THis是我的代码:

jQuery

代码语言:javascript
复制
<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

代码语言:javascript
复制
{!! Form::open(['route' => ['companiesDelete', ':USER_ID'], 'method' =>'DELETE', 'id' => 'formDelete']) !!}

    {!!Form::close() !!}

控制器

代码语言:javascript
复制
public function delete($id, \Request $request){
        return $id;
    }

Jquery错误是http://localhost/laravel5.1/public/empresas/eliminar/5 405 (不允许使用方法)。

Url值为

代码语言:javascript
复制
http://localhost/laravel5.1/public/empresas/eliminar/5

数据值为

代码语言:javascript
复制
_method=DELETE&_token=pCETpf1jDT1rY615o62W0UK7hs3UnTNm1t0vmIRZ.

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

有人能帮我吗?

谢谢。

编辑!!

路由

代码语言:javascript
复制
Route::post('empresas/eliminar/{id}', ['as' => 'companiesDelete', 'uses' => 'CompaniesController@delete']);
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2015-07-25 12:19:38

methodNotAllowed异常表明您正在请求的HTTP方法不存在路由。

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

代码语言:javascript
复制
Route::delete('empresas/eliminar/{id}', [
        'as' => 'companiesDelete',
        'uses' => 'CompaniesController@delete'
]);
票数 52
EN

Stack Overflow用户

发布于 2015-07-25 12:36:53

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

我假设您当前的设置是这样的:

代码语言:javascript
复制
Route::post('/empresas/eliminar/{id}','CompanyController@companiesDelete');

或者别的什么。而是为delete方法定义一个路由。

代码语言:javascript
复制
Route::delete('/empresas/eliminar/{id}','CompanyController@companiesDelete');

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

票数 7
EN

Stack Overflow用户

发布于 2019-06-26 02:15:13

这可能对某些人有帮助,所以我也会把我的输入放在这里。

我也遇到过同样(或类似)的问题。显然,问题是POST请求被Modsec通过以下规则阻止: 350147,340147,340148,350148

在阻塞请求之后,我被重定向到相同的端点,但当然是作为一个GET请求,因此也就是405。

我把这些规则列入了白名单,瞧,405错误已经消失了。

希望这对某些人有帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31622818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档