我的浏览器控制台上出现以下错误:“ 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个内部服务器错误。所以有人帮助了我。
答案 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);
}
});
}
我希望这会有所帮助