Laravel Ajax放置请求返回500内部服务器错误

时间:2019-01-10 19:05:08

标签: php jquery ajax laravel laravel-5

我的浏览器控制台上出现以下错误:“ PUT http://localhost:8000/post/2 500(内部服务器错误)”

我使用资源控制器和路由-Route :: resource('post','PostController');

此处是更新发布的资源控制器代码:

public function update(Request $request, $id)
{
        $post = Post::findOrFail($id);
        $post->name = $request->name;
        $post->content = $request->content;
        $post->save();
        return response()->json($post);
}

这是我的查看代码:

<form class="form-horizontal" role="form">
    <div class="form-group">
        <input type="text" class="none" id="id">
        <label class="control-label col-sm-2">Name:</label>
        <div class="col-sm-10">
            <input type="text" class="form-control" id="name">
        </div>
    </div>
    <div class="form-group">
        <label class="control-label col-sm-2">content:</label>
        <div class="col-sm-10">
            <input type="text" class="form-control" id="content">
        </div>
    </div>
    <div class="form-group">
        <input type="submit" value="Edit" onclick="mainCatEdit();">
    </div>
</form>

Ajax代码:

function mainCatEdit() {
    $.ajax({
        url: '/maincategory/'+id,
        type: 'PUT',
        data: {
            '_token': $('input[name=_token]').val(),
            'id': $('#id').val(),
            'name': $('#name').val(),
            'content': $('#content').val()
        },
        success:function(data) {
            console.log(data);
        }
    });
}

通过我在文件标头上使用元令牌{{csrf_token()}}的方式。 但是我在localhost上收到500个内部服务器错误。所以有人帮助了我。

2 个答案:

答案 0 :(得分:0)

您忘记将数据填充到模型中,请执行以下操作:

public function update(Request $request, $id)
{
        $post = Post::findOrFail($id);
        $post->fill([
            $post->name = $request->name;
            $post->content = $request->content;
        ]);
        $post->save();
        return response()->json($post);
}

答案 1 :(得分:0)

您正在尝试获取未设置的令牌的值,让我们无需测试即可再次查看代码,只需尝试一下 将此设置在页面顶部meta标签下

<meta name="csrf-token" content="{{ csrf_token() }}">

那么您的ajax应该是

function mainCatEdit() {
$.ajaxSetup({
headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});
$.ajax({
    url: '/maincategory/'+id,
    type: 'PUT',
    data: {
        'id': $('#id').val(),
        'name': $('#name').val(),
        'content': $('#content').val()
    },
    success:function(data) {
        console.log(data);
    }
});

}

我希望这会有所帮助