Laravel中Ajax的动态数据加载

时间:2018-08-03 06:33:57

标签: ajax laravel

我有Post个show方法,我按他们的id显示每个帖子,这是这样的:

$post = Post::find($id);
$comments = Comment::where('post_id', '=', $post->id)->get();
return view('single', compact('post','comments'));

有了这个,我基本上可以加载我的帖子详细信息,并foreach发表评论(到目前为止非常好)。

我想做什么

是通过ajax获得我的评论,例如,当user 1正在阅读该帖子,而其他地方user 2添加新评论user 1时,就可以看到它。因此,user 1无需刷新页面即可查看新评论。

问题

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以使用Laravel的渠道合并到Redis服务器。每次存储评论时,您都可以将评论推送到发布频道并使用ajax显示(使用laravel echo服务器)。该频道的所有订阅用户将收到新评论。

答案 1 :(得分:0)

这就是我要做的

PHP

Route::get('/posts/{post}/comments', 'PostsController@comments');

public function post(Post $post) {
    return response()->json(
        Post::with('comments')->get()   // Create HasMany relation named "comments", see Eloquent Relationships
    );
}

JavaScript

(function($) {
    var intervalMiliseconds = 5000;
    var pool = function() {
        $.ajax({
            method: 'GET',
            url: '/post/100/comments',
            success: function(response) {
                console.log(response);
            }
        });
    };

    setInterval(pool, intervalMiliseconds);
})(jQuery);

请避免在JavaScript代码中使用PHP代码,只需将所有JS代码移动到*.js文件中,大多数(如果不是全部)来自PHP的必需数据都通过使用data-*元素属性来传递