我正在Laravel 5中开展一个项目,我陷入了一个非常奇怪的问题。我正在尝试创建用户个人资料部分,用户可以在其中修改详细信息,并将表单提交到POST
路由profile/update
。
出于某种原因,我得到了一个MethodNotAllowedHttpException
,但我确信我已经在路由文件中声明了它,如下所示:
Route::post('profile/update', 'ProfileController@update');
出于好奇,我在路由文件和发送ajax请求的代码中将其更改为GET
。令我惊讶的是它工作正常。我无法理解。出于显而易见的原因,我无法发送GET
更新个人资料请求。
Ajax代码:
$.ajax({
url: '/profile/update',
type: 'POST',
dataType: 'JSON',
data: $('form#profile-form').serialize(),
beforeSend: function(request) {
return request.setRequestHeader('X-CSRF-Token', $("meta[name='token']").attr('content'));
}
});
控制器方法:
public function update(UpdateProfileRequest $request)
{
$data = $request->all();
$data['password'] = bcrypt($data['password']);
$user = auth()->user()->update($data);
return response()->json(auth()->user(), 200);
}
我做错了什么?
答案 0 :(得分:0)
好吧,在另一天敲了几个小时后,我意识到老开发者在某个地方留下了一段代码:
<input type="hidden" name="_method" value="put" />
就是这样。尽管我的ajax调用是POST
,但Laravel认为它是PUT
。无论如何,谢谢所有评论并试图提供帮助的人。欣赏它。