我在Laravel 5.5中更新数据时遇到问题。当我尝试更新资源控制器的记录时,我收到MethodNotAllowedException
,但我使用的是PUT
方法。以下是详细信息:
路线:
Route::middleware(['auth'])->group(function(){
Route::get('/', 'DashboardController@index')->name('home')
Route::resource('stages', 'StagesController');
});
Ajax方法:
$('#ajax_form_modal').on('submit', 'form', function (event) {
event.preventDefault();
var $modal = $('#ajax_form_modal');
var $modal_dialog = $modal.find('.modal-dialog');
var $form = $(this);
var method = 'post';
if ($form.find('[name="_method"]')) {
method = $form.find('[name="_method"]').val(); //this fires
} else if ($form.has('method')) {
method = $form.attr('method');
}
//method = 'PUT'
$.ajax({
url: $(this).attr('href'),
dataType: 'json',
type: method,
data: $(this).serialize(),
响应:
"trace": [
{
"file": "\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\RouteCollection.php",
"line": 238,
"function": "methodNotAllowed",
"class": "Illuminate\\Routing\\RouteCollection",
"type": "->",
"args": [
[
"GET",
"HEAD",
"POST"
]
]
},
我不知道,为什么更新方法只允许'GET','HEAD','POST',我试图使用Post方法手动处理更新并且它工作,也尝试调试路由不匹配发生但没有运气的地方。任何人都可以建议吗?我真的不想破坏我的控制器的RESTFUL。
答案 0 :(得分:0)
我发现了这个错误:href应该是动作,需要更多的睡眠......
$.ajax({
url: $(this).attr('href'),
dataType: 'json',
type: method,
data: $(this).serialize(),