所以这是我的ajax代码
我认为ajax代码是对的。
$(document).ready(function(){
$('.add-comment').click(function(){
var comment_data = $('.comment-form').serialize();
$.ajax ({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
method: 'POST',
url: '/comment',
data: comment_data,
success: function(data) {
console.log(data);
$('.all-comment').append(data);
},
error: function(data) {
console.log('error');
}
})
})
});
这是我的控制器
public function store(Request $reqeust) {
$comment = Comment::create([
'body' => request('body'),
]);
return view('welcome',compact('comment'))->render();
}
我认为问题出现在控制器中,我是开发新手所以..是的
是的,我收到错误
POST http://localhost:8000/comment 500(内部服务器错误)
答案 0 :(得分:0)
如果您正在进行AJAX通话,您可能不需要返回整个欢迎视图。如果评论成功保存,则最简单的方法是返回true,否则返回false。
此外,您不会将评论附加到任何内容。我猜你还有其他需要在评论表中填写的字段,例如post_id。如果是这种情况,您可以将post_id作为另一个参数传递给请求并执行:
public function store(Request $request)
{
$post = Post::findOrFail( $request->post_id );
Comment::create([
'post_id' => $post->id,
'body' => $request->body
]);
return true;
}
这证明确实有一个要链接的帖子。
更好的是,您可以使用路径模型绑定和关系来执行:
public function store(Request $request, Post $post)
{
$post->comments->create([
'body' => $request->body
]);
return true;
}
这将做同样的事情,它有点清洁。此外,由于关系,它会自动添加post_id(假设你设置了它)。