通过AJAX在PATCH请求上收到405(方法不允许)

时间:2016-05-06 01:47:48

标签: ajax laravel-5.2

我正在尝试使用AJAX调用通过使用Laravel 5.2的表单更新用户条目。当我提交没有AJAX的表单时,新条目会像它们应该的那样进入数据库,但是如果我通过PATCH AJAX请求尝试它,我会收到405(Method Not Allowed)错误。

以下是我表格的第一行:

{!! Form::open(['method' => 'PATCH', 'action' => ['ProjectsController@foo', 1]]) !!}

这是AJAX电话:

$.ajax
({
    url: '/foo/update/1',
    type: 'PATCH',
    dataType: 'json',
    success: function(response)
    {
        alert('inside AJAX function');
        console.log('inside AJAX leader button');
    }
});

当我尝试将方法类型更改为PUT时,我收到相同的错误,当我将其更改为PUT / PATCH时,不会触发AJAX调用。当我将方法更改为POST时,我收到错误500,方法未找到异常,因为更新方法不是post方法。 我用这一行来创建所有RESTful方法:

Route::resource('foo', 'FooController');

我知道我可以尝试使用POST方法使其工作,但我想更多地了解PATCH。如果您有任何可以帮助我解决此问题的信息,我们将不胜感激。

2 个答案:

答案 0 :(得分:0)

这意味着端点不允许PATCH请求。根据RFC 2016,还应该返回一个Allowed标头,其中包含允许的请求方法列表,因此请检查一个请求,然后您将确定可以使用的方法。

答案 1 :(得分:0)

补丁需要一个身体;如果要更新记录,则需要为Patch提供正文。在您的情况下,它可能是一个空对象!