I've got this resource in routes.php:
Route::resource('items', 'ItemsController', ['before' => 'admin_access']);
Trying to reach ItemsContoller@update
method through AJAX but it's kicking out a 405 Method not allowed
error:
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();
}
}
});
Both the id
and data
variables contain the correct information.
This works fine when I do a standard form submission with PUT as the method (using anahkiasen/Former
opener method).
What am I missing here?
Most browsers can't send PUT methods and are restricted to just GET and POST.
Try changing the method to POST, but leave your
_method
element in thedata
array to spoof the request method.