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

这是我的代码:

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请求,它的工作正常,但我想做一个发布的请求。

任何人都可以帮助我

谢谢。

编辑!!

路线

Route::post('empresas/eliminar/{id}', ['as' => 'companiesDelete', 'uses' => 'CompaniesController@delete']);
分享改善这个问题
 
1 
检查你的路由文件,你可能会得到一个获取方法在路线尝试它与邮政将工作....... -  Sagar Naliyapara 7月25 '15在4:17

2答案 正确答案

methodNotAllowed异常指示的路线不会为您所请求的HTTP方法存在。

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

Route::delete('empresas/eliminar/{id}', [
        'as' => 'companiesDelete',
        'uses' => 'CompaniesController@delete'
]);
分享改善这个答案
 

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

我假设你目前的设置是:

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

或者其他的东西。为删除方法定义路由。

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

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

分享改善这个答案
 

来自  https://stackoverflow.com/questions/31622818/error-405-method-not-allowed-laravel-5