Javascript Laravel:将更多数据从控制器加载到视图中
我想问一下,如何使用js或ajax显示更多数据,并调用Controller将结果显示到我的视图中。到目前为止,我第一次展示了8篇带有限制(8)的帖子。然后我使用ajax调用控制器,每次都会带来8篇以上的帖子。我面临的问题是,每次调用控制器或ajax时,帖子都是相同的。这是我的 后置控制器 控制器由web、route调用Javascript Laravel:将更多数据从控制器加载到视图中,javascript,php,jquery,ajax,laravel-5.4,Javascript,Php,Jquery,Ajax,Laravel 5.4,我想问一下,如何使用js或ajax显示更多数据,并调用Controller将结果显示到我的视图中。到目前为止,我第一次展示了8篇带有限制(8)的帖子。然后我使用ajax调用控制器,每次都会带来8篇以上的帖子。我面临的问题是,每次调用控制器或ajax时,帖子都是相同的。这是我的 后置控制器 控制器由web、route调用 Route::get('/posts','PostsController@index'); 我在posts.display中调用foreach方法 @foreach($post
Route::get('/posts','PostsController@index');代码>
我在posts.display中调用foreach方法
@foreach($posts作为$post)
@if(strlen($post->body)<“701”)
{{$post->created_at}
,,
@恩迪夫
@如果($category->id=$post->category\u fac)
@恩迪夫
@endforeach
body)>“700”)
{{$post->created_at}
,
@恩迪夫
@如果($category->id=$post->category\u fac)
@恩迪夫
@endforeach
最后,我在页脚中使用ajax调用控制器
通过url获取具有相同限制的数据
$(窗口)。滚动(函数(){
var标志=0;
如果($(窗口).scrollTop()+$(窗口).height()>=$(文档).height()){
$.ajax(
{
url:“/posts”,
键入:“get”,
/*beforeSend:function()
{
$('.ajax load').show();
}*/
数据:{
“偏移”:标志,
“限制”:8
},
成功:功能(数据){
$('.ajax load').hide();
$(“#网格”).append(data.html);
flag+=8;
}
})
}
});
函数loadMoreData(){
$.ajax(
{
url:“/posts”,
键入:“get”,
/*beforeSend:function()
{
$('.ajax load').show();
}*/
数据:{
“偏移量”:0,
“限制”:8
}
})
.完成(功能(数据)
{
如果(data.html==“”){
$('.ajax load').html(“未找到更多记录”);
返回;
}
$('.ajax load').hide();
$(“#网格”).append(data.html);
flag+=8;
})
.fail(函数(jqXHR、ajaxOptions、thrownError)
{
警报('服务器没有响应…');
});
}
所有数据都由ajax显示在posts.load的posts.display代码的副本中
@foreach($posts as$post)
@if(strlen($post->body)<“701”)
{{$post->created_at}
,,
@恩迪夫
@如果($category->id=$post->category\u fac)
@恩迪夫
@endforeach
body)>“700”)
{{$post->created_at}
,
@恩迪夫
@如果($category->id=$post->category\u fac)
@恩迪夫
@endforeach
所以我的问题是,为什么这总是带来相同的数据?每次我在滚动的末尾看到ajax调用控制器时,它都会坚持前8条帖子,而不是下一条。我是遗漏了什么还是我的代码错了?任何帮助都将不胜感激。通过@Shan help,我发现了问题所在
首先,我修复了这个页面页脚中的js:
在帮助我解决这个问题的评论中,@Shan获得了积分。有了@Shan的帮助,我发现了问题所在
首先,我修复了这个页面页脚中的js:
在帮助我解决这个问题的评论中,@Shan获得了积分。使用$dbObject->paginate(8)代替limit(4)。您只需将参数“page”传递给控制器,其余参数将正常工作。您好@Shan,谢谢您的回复-帮助。我试图改变这个$posts=Post::orderBy('created_at','desc')->limit(4)->get()
class PostsController extends Controller {
public function index(Request $request)
{
$posts = Post::orderBy('created_at', 'desc')->limit(4)->get();
$categories = Category::all();
if ($request->ajax()) {
$view = view('posts.load', compact('posts', 'categories'))->render();
return response()->json(['html'=>$view]);
}
return view('posts.display', compact('categories', 'posts'));
}
}
<div class="col-md-8 col-md-offset-2" id="grid" style="padding-top: 40px;">
@foreach($posts as $post)
@if(strlen($post->body) < "701")
<div class="item">
<div class="col-col-12 tr-share share" style="padding: 1px 0 1px 0">
<span class="time">{{$post->created_at}}</span>
<a href="">
<span class="emoji">
{{Emoji::findByName("link")}}
</span>
</a>
<a href="">
<span class="emoji">
{{Emoji::findByName("mail")}}
</span>
</a>
<a href="">
<span class="emoji">
{{Emoji::findByName("pin")}}
</span>
</a>
</div>
<div class="tr-text">
<div class="col-md-12 td-text">
<p><a>{{$post->body}}</a></p>
</div>
</div>
<div class="tr-tag">
<div style="padding: 1px 0 1px 0; text-align: center">
{{Emoji::findByName("tag")}}Tag:
@foreach($categories as $category)
@if($category->id == $post->category_un)
<a href=""><span class="tag-un">#{{$category->name}}</span></a>,
@endif
@if($category->id == $post->category_fac)
<a href=""><span class="tag-fac">#{{$category->name}}</span></a>
@endif
@endforeach
</div>
</div>
<div class="tr-options">
<a href="" style="color: #dca20f"><span class="cool">(0) {{Emoji::findByName("cool")}}</span></a>
<hr class="vt-hr" />
<a href="" style="color: #AA8062"><span class="poo">(0) {{Emoji::findByName("poo")}}</span></a>
<hr class="vt-hr" />
<a href="" style="color: #000000"><span class="speech">(0) {{Emoji::findByName("speech")}}</span></a>
</div>
</div>
@elseif(strlen($post->body) > "700")
<div class="item">
<div class="col-col-12 tr-share share" style="padding: 1px 0 1px 0">
<span class="time">{{$post->created_at}}</span>
<a href="">
<span class="emoji">
{{Emoji::findByName("link")}}
</span>
</a>
<a href="">
<span class="emoji">
{{Emoji::findByName("mail")}}
</span>
</a>
<a href="">
<span class="emoji">
{{Emoji::findByName("pin")}}
</span>
</a>
</div>
<div class="tr-text">
<div class="col-md-12 td-text">
<p class="more"><a>{{$post->body}}</a></p>
<?php // echo strlen($post->body);?>
<!--- <a><span>Διάβασέ την συνέχεια..</span></a> -->
</div>
</div>
<div class="tr-tag">
<div style="padding: 1px 0 1px 0; text-align: center">
{{Emoji::findByName("tag")}}Tag:
@foreach($categories as $category)
@if($category->id == $post->category_un)
<a href=""><span class="tag-un">#{{$category->name}}</span></a>,
@endif
@if($category->id == $post->category_fac)
<a href=""><span class="tag-fac">#{{$category->name}}</span></a>
@endif
@endforeach
</div>
</div>
<div class="tr-options">
<a href="" style="color: #dca20f"><span class="cool">(0) {{Emoji::findByName("cool")}}</span></a>
<hr class="vt-hr" />
<a href="" style="color: #AA8062"><span class="poo">(0) {{Emoji::findByName("poo")}}</span></a>
<hr class="vt-hr" />
<a href="" style="color: #000000"><span class="speech">(0) {{Emoji::findByName("speech")}}</span></a>
</div>
</div>
@endif
@endforeach
</div>
<div class="ajax-load text-center" style="display:none">
<p><img src=""></p>
</div>
<script type="text/javascript">
$(window).scroll(function() {
var flag = 0;
if($(window).scrollTop() + $(window).height() >= $(document).height()) {
$.ajax(
{
url: '/posts',
type: 'get',
/*beforeSend: function()
{
$('.ajax-load').show();
}*/
data: {
'offset': flag,
'limit': 8
},
success: function(data){
$('.ajax-load').hide();
$("#grid").append(data.html);
flag += 8;
}
})
}
});
function loadMoreData(){
$.ajax(
{
url: '/posts',
type: 'get',
/*beforeSend: function()
{
$('.ajax-load').show();
}*/
data: {
'offset': 0,
'limit': 8
}
})
.done(function(data)
{
if(data.html == " "){
$('.ajax-load').html("No more records found");
return;
}
$('.ajax-load').hide();
$("#grid").append(data.html);
flag += 8;
})
.fail(function(jqXHR, ajaxOptions, thrownError)
{
alert('server not responding...');
});
}
@foreach($posts as $post)
@if(strlen($post->body) < "701")
<div class="item">
<div class="col-col-12 tr-share share" style="padding: 1px 0 1px 0">
<span class="time">{{$post->created_at}}</span>
<a href="">
<span class="emoji">
{{Emoji::findByName("link")}}
</span>
</a>
<a href="">
<span class="emoji">
{{Emoji::findByName("mail")}}
</span>
</a>
<a href="">
<span class="emoji">
{{Emoji::findByName("pin")}}
</span>
</a>
</div>
<div class="tr-text">
<div class="col-md-12 td-text">
<p><a>{{$post->body}}</a></p>
</div>
</div>
<div class="tr-tag">
<div style="padding: 1px 0 1px 0; text-align: center">
{{Emoji::findByName("tag")}}Tag:
@foreach($categories as $category)
@if($category->id == $post->category_un)
<a href=""><span class="tag-un">#{{$category->name}}</span></a>,
@endif
@if($category->id == $post->category_fac)
<a href=""><span class="tag-fac">#{{$category->name}}</span></a>
@endif
@endforeach
</div>
</div>
<div class="tr-options">
<a href="" style="color: #dca20f"><span class="cool">(0) {{Emoji::findByName("cool")}}</span></a>
<hr class="vt-hr" />
<a href="" style="color: #AA8062"><span class="poo">(0) {{Emoji::findByName("poo")}}</span></a>
<hr class="vt-hr" />
<a href="" style="color: #000000"><span class="speech">(0) {{Emoji::findByName("speech")}}</span></a>
</div>
</div>
@elseif(strlen($post->body) > "700")
<div class="item">
<div class="col-col-12 tr-share share" style="padding: 1px 0 1px 0">
<span class="time">{{$post->created_at}}</span>
<a href="">
<span class="emoji">
{{Emoji::findByName("link")}}
</span>
</a>
<a href="">
<span class="emoji">
{{Emoji::findByName("mail")}}
</span>
</a>
<a href="">
<span class="emoji">
{{Emoji::findByName("pin")}}
</span>
</a>
</div>
<div class="tr-text">
<div class="col-md-12 td-text">
<p class="more"><a>{{$post->body}}</a></p>
<?php // echo strlen($post->body);?>
<!--- <a><span>Διάβασέ την συνέχεια..</span></a> -->
</div>
</div>
<div class="tr-tag">
<div style="padding: 1px 0 1px 0; text-align: center">
{{Emoji::findByName("tag")}}Tag:
@foreach($categories as $category)
@if($category->id == $post->category_un)
<a href=""><span class="tag-un">#{{$category->name}}</span></a>,
@endif
@if($category->id == $post->category_fac)
<a href=""><span class="tag-fac">#{{$category->name}}</span></a>
@endif
@endforeach
</div>
</div>
<div class="tr-options">
<a href="" style="color: #dca20f"><span class="cool">(0) {{Emoji::findByName("cool")}}</span></a>
<hr class="vt-hr" />
<a href="" style="color: #AA8062"><span class="poo">(0) {{Emoji::findByName("poo")}}</span></a>
<hr class="vt-hr" />
<a href="" style="color: #000000"><span class="speech">(0) {{Emoji::findByName("speech")}}</span></a>
</div>
</div>
@endif
@endforeach
<script type="text/javascript">
var pageNumber = 2;
$(document).ready(function() {
$.ajax({
type : 'GET',
url: "websiteURL/posts?page=" +pageNumber,
success : function(data){
pageNumber +=1;
if(data.length == 0){
}else{
$('#grid').append(data.html);
}
},error: function(data){
},
})
});
$(window).scroll(function() {
if($(window).scrollTop() + $(window).height() >= $(document).height()) {
$.ajax({
type : 'GET',
url: "websiteURL/posts?page=" +pageNumber,
success : function(data){
pageNumber +=1;
if(data.length == 0){
}else{
$('#grid').append(data.html);
}
},error: function(data){
},
})
}
});
function loadMoreData(){
$.ajax({
type : 'GET',
url: "http://communitune.com/posts?page=" +pageNumber,
success : function(data){
pageNumber +=1;
if(data.length == 0){
// :( no more articles
}else{
$('#grid').append(data.html);
}
},error: function(data){
},
})
}
</script>
public function index(Request $request)
{
$posts = Post::orderBy('created_at', 'desc')->paginate(8);
//$posts = Post::orderBy('created_at', 'desc')->limit(8)->get();
$categories = Category::all();
if ($request->ajax()) {
$view = view('posts.load', compact('posts', 'categories'))->render();
return response()->json(['html'=>$view]);
}
return view('posts.display', compact('categories', 'posts'));
}