我有一个包含食谱的网站,用户可以对任何食谱发表评论。现在当用户提交评论时,整个页面正在重新加载,我想通过AJAX来实现更好的用户体验。我现在的代码是:
在我的路线/ web.php
中Route::post('comments/{post_id}', 'CommentsController@store');
在我的评论控件中
public function store(Request $request, $post_id)
{
$this->validate($request, array(
'name'=>'required|max:32',
'email'=>'required|email|max:255',
'comment'=>'required|min:5|max:1000'));
$comment = new Comment;
$post=Post::find($post_id);
$comment->name=$request->name;
$comment->email=$request->email;
$comment->comment=$request->comment;
$comment->post()->associate($post);
$comment->save();
Session::flash('success', 'The Comment Was Added!');
return redirect()->route('slug',[$post->slug]);
}
以上代码正常运行。现在,当我尝试这样做时,它不起作用。
我的Ajax:
<script>
$(document).ready(function(){
var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');
$(".postbutton").click(function(){
$.ajax({
url: '{{route('comments.store',$post->id)}}',
type: 'POST',
data: {_token: CSRF_TOKEN, name:$(".name").val(),
email:$(".email").val(),comment:$(".comment").val()},
dataType: 'JSON',
success: function (data) {
$(".msg").append(data.comment);
}
});
});
});
</script>
在我的控制器中,我已将其更改为: 在我的评论控制器
public function store(Request $request, $post_id)
{
$this->validate($request, $response=array(
'name'=>'required|max:32',
'email'=>'required|email|max:255',
'comment'=>'required|min:5|max:1000'));
$comment = new Comment;
$post=Post::find($post_id);
$comment->name=$request->name;
$comment->email=$request->email;
$comment->comment=$request->comment;
$comment->post()->associate($post);
$comment->save();
Session::flash('success', 'The Comment Was Added!');
response()->json($response);
}
我得到了404响应,但我检查了路由(以前都是一样的,而不仅仅是ajax),一切都很好。 我在这做错了什么?谢谢你的帮助。