web-dev-qa-db-ja.com

PUTがAJAX for Laravel resourceで使用された場合はメソッドは許可されません

私はroutes.phpにこのリソースを持っています:

Route::resource('items', 'ItemsController', ['before' => 'admin_access']);

AJAXを介してItemsContoller@updateメソッドに到達しようとしていますが、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();
        }
    }
});

id変数とdata変数の両方に正しい情報が含まれています。

これは、メソッドとしてPUTを使用して(anahkiasen/Formerオープナーメソッドを使用して)標準のフォーム送信を行う場合に正常に機能します。

ここで何が欠けていますか?

9
eComEvo

ほとんどのブラウザはPUTメソッドを送信できず、GETとPOSTのみに制限されています。

メソッドをPOSTに変更してみてください。ただし、_method要素をdata配列に残して、リクエストメソッドをスプーフィングします。

13
Martin Bean