私は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
オープナーメソッドを使用して)標準のフォーム送信を行う場合に正常に機能します。
ここで何が欠けていますか?
ほとんどのブラウザはPUTメソッドを送信できず、GETとPOSTのみに制限されています。
メソッドをPOSTに変更してみてください。ただし、_method
要素をdata
配列に残して、リクエストメソッドをスプーフィングします。