Laravel 5 GET允许但不允许POST

时间:2015-05-09 04:31:56

标签: php laravel-5 laravel-routing

我正在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);
}

我做错了什么?

1 个答案:

答案 0 :(得分:0)

好吧,在另一天敲了几个小时后,我意识到老开发者在某个地方留下了一段代码:

<input type="hidden" name="_method" value="put" />

就是这样。尽管我的ajax调用是POST,但Laravel认为它是PUT。无论如何,谢谢所有评论并试图提供帮助的人。欣赏它。