我正在尝试更新列的值,但是它现在可以工作。 我正在尝试这样做以更新页面上的视图,但是没有发生。 没有错误仍未在数据库中更新。 查看页面
<form style="" name="fbCommentCountform" id="fbCommentCountForm" action="{{ url('/posts/{$display_post->id}')}}" method="POST">
{{ csrf_field() }}
<input type="hidden" name="_method" value="PUT">
<input type="text" name="commentCount" id="fbFormCommentCount">
<input type="text" name="visitCount" id="hiddenFormPostVisitCounter" value="{{ $display_post->visit_count }}">
</form>
控制器
public function update(Request $request, $id)
{
$image = $request->file('featured_img');
$posts = Post::findOrFail($id);
if(!empty($image))
{
$name = str_slug($request->title).'.'.$image->getClientOriginalExtension();
$destinationPath = public_path('/public/images');
$imagePath = $destinationPath. "/". $name;
$image->move($destinationPath, $name);
$posts->featured_img = $name;
}
$posts->title = $request->title;
$posts->body = $request->body;
$posts->slug = $request->slug;
$posts->categories_id = $request->category;
$posts->description = $request->description;
$posts->visit_count = $request->visitCount;
$this->validate($request,[
'title' => 'required|string|max:255',
'body' => 'required'
]);
$posts->update();
return redirect('posts');
现在这是ajax代码
<script>
let fbCommentCount = document.getElementById('fbCommentCount').getElementsByClassName('fb_comments_count');
setTimeout(function() {
document.getElementById('fbFormCommentCount').value = fbCommentCount[0].innerHTML;
var $formVar = $('#fbCommentCountForm');
let visitCount = document.getElementById('hiddenFormPostVisitCounter').value;
let visitCountPlusOne = parseInt(visitCount) + 1;
document.getElementById('hiddenFormPostVisitCounter').value = visitCountPlusOne;
$.ajax({
url: $formVar.prop('{{ url('/posts/{$display_post->id}') }}'),
method: 'PUT',
data: $formVar.serialize(),
});
}, 1000);
</script>
如果有人可以帮助我解决这个问题
答案 0 :(得分:0)
更好的做法是使用方法route()
代替url()
。
您应该调用变量post
。它是单个元素,但要重点。您验证错误。在您的请求中,您没有变量:title
和body
,并且Validator在更新数据之前会返回错误。
答案 1 :(得分:0)
也许这行不通,但请先检查:
update
中使用$post
而不是$posts
,将会更好。您只请求一个帖子;)将$posts->update();
更改为:
if ($post->isDirt()) {
$post->save(); //Notice that here i am using save instead of update
}
能否请您向我们提供来自ajax的请求?我是你要寄的身体?如果要发送文件,则需要使用multipartdata
格式。看这里:
What does enctype='multipart/form-data' mean?