问题
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?
回答1:
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 the data array to spoof the request method.
来源:https://stackoverflow.com/questions/31631206/method-not-allowed-when-put-used-over-ajax-for-laravel-resource