当 PUT 在 AJAX 上用于 Laravel 资源时不允许使用方法
Method not allowed when PUT used over 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
opener 方法)进行标准表单提交时,这工作正常。
我在这里错过了什么?
大多数浏览器无法发送 PUT 方法并且仅限于 GET 和 POST。
尝试将方法更改为 POST,但将 _method
元素留在 data
数组中以欺骗请求方法。
我在 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
opener 方法)进行标准表单提交时,这工作正常。
我在这里错过了什么?
大多数浏览器无法发送 PUT 方法并且仅限于 GET 和 POST。
尝试将方法更改为 POST,但将 _method
元素留在 data
数组中以欺骗请求方法。