我通过JS从API加载数据将数据发送到Laravel Controller并将它们保存到数据库中。加载所有Ajax之后我想在master.blade的子视图/部分中显示数据 - 是否可以在页面加载完成后动态呈现View, - 以后我想更新数据库行并显示新的视图中的数据动态。
//afater Ajax loading - update / display the data in the view
public function loadcomments() {
$comments = Comment::all();
$childcomment = Childcomment::all();
return View::make('partial')
->with(compact('comments'))
->with(compact('childcomments'));
}
在user.blade.php(主站点)中的我正在定义
@section('comments')
@include('partial')
@stop
并且在master.blade.php中我定义了yield:
@yield('content')
@yield('comments')
知道如何使用更新的内容呈现网站吗?
答案 0 :(得分:3)
一旦页面加载完毕,没有对Laravel应用程序进行进一步的AJAX调用,它将不会再参与请求。
你可以用JS更新前端标记,或者你可以使用AJAX / jQuery回调你的Laravel应用程序,在将数据添加到数据库后将数据拉回来。
使用资源控制器或类似的实现来允许插入和读取注释(CRUD),以便在需要使用AJAX时提取数据。
修改
在前端有不同的方法使页面动态化所有这些通常包括Javascript或其他前端脚本语言。
过去我使用jQuery来处理页面内容的更新,使用JSON或XML / HTML,但最近我开始使用AngularJS。 另一个图书馆是EmberJS,我目前正在学习使用它,但我觉得前端语言超出了这个问题的范围。
有很多关于在页面加载后通过回调控制器或其他资源丰富的路径来更新HTML的教程。
假设帖子已保存到数据库中,如果在视图返回浏览器后完成此操作,则必须使用javascript来提取数据,并且很可能有一段js代码来勾选"轮询"您的资源控制器以获取新评论。
如果检测到新评论,则会发出第二个请求以撤消评论,或者使用AJAX从轮询请求中返回评论。
在laravel方面,可以返回部分视图或JSON,为简单起见,我们将替换视图。您可以为浏览器上的当前现有部分创建一个jQuery选择器,然后将其替换为使用AJAX从Laravel中提取的部分。
$('#some-page .my-view-to-update').html(somedata)
;
我的jQuery非常生疏,所以请阅读相关文档以正确更新HTML。
答案 1 :(得分:0)
You can also use Pusher