当PUT通过AJAX用于Laravel资源时不允许的方法

eCo*_*Evo 9 ajax jquery laravel laravel-4 laravel-routing

我在routes.php中有这个资源:

Route::resource('items', 'ItemsController', ['before' => 'admin_access']);
Run Code Online (Sandbox Code Playgroud)

试图ItemsContoller@update通过AJAX 达到方法,但它正在引发一个405 Method not allowed错误:

var $inputs = $('input', row);

var id = $(row).find('.edit').data('id');

var data = $inputs.serializeJSON();

data['_token'] = $('input[name=_token]').val();
data['_method'] = 'PUT';

console.debug(data);

$.ajax({
    url: 'items/' + id,
    method: 'PUT',
    dataType: 'json',
    data: data,
    complete: function (data) {
        if (data.success) {
            itemsTable.ajax.reload();
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

两个iddata变量都包含正确的信息.

当我使用PUT作为方法(使用anahkiasen/Former开启方法)进行标准表单提交时,这很好用.

我在这里错过了什么?

Mar*_*ean 14

大多数浏览器无法发送PUT方法,仅限于GET和POST.

尝试将方法更改为POST,但将_method元素保留在data数组中以欺骗请求方法.