我正在尝试使用ajax来查找我的分页的下一页。然而它不断引入整个身体。我用了一个打印屏幕来显示问题。
我不是ajax show的专家会对我如何纠正这个问题表示感谢?
我的代码如下:
public function viewall()
{
$data["projects"] = $projects = Auth::user()->projects()->paginate(3);
if(Request::ajax())
{
$html = View::make('projects.viewall', $data)->render();
return Response::json(array('html' => $html));
}
return View::make('projects.viewall')->with('projects', $projects);
}
JS / js.js
$(".pagination a").click(function()
{
var myurl = $(this).attr('href');
$.ajax(
{
url: myurl,
type: "get",
datatype: "html",
beforeSend: function()
{
$('#ajax-loading').show();
}
})
.done(function(data)
{
$('#ajax-loading').hide();
$("#projects").empty().html(data.html);
})
.fail(function(jqXHR, ajaxOptions, thrownError)
{
alert('No response from server');
});
return false;
});
viewall.blade.php
@extends("layout")
@section("content")
<div class="container">
<h4>Your Projects</h4>
<div id="ajax-loading" class="alert alert-warning" style="display: none;">
<strong>Loading...</strong>
</div>
@if (Auth::check())
@if (count($projects) > 0)
@foreach ($projects as $project)
<div class="one-third column" id="projects">
{{ $project->project_name }}
{{ $project->project_brief }}
{{ date("d-m-Y", strtotime($project->start_day)) }}
</div>
@endforeach
@else
<h5 class="errorslist">You have no projects click <a class="errorslist" href="/project/create">here to create a project</a></h5>
@endif
@endif
<div class="sixteen columns">
{{ $projects->links() }}
</div>
</div>
@stop
答案 0 :(得分:0)
这一行:
$("#projects").empty().html(data.html);
将使用您在此处创建的返回#project
填充html
:
$html = View::make('projects.viewall', $data)->render()
;
因此,您只需要更改projects.viewall
,只需要加载“部分视图”。
可能您不需要扩展主要布局。
答案 1 :(得分:0)
但你在这里渲染一个视图:
$html = View::make('projects.viewall', $data)->render();
所以html是由Laravel创建的,然后你将它作为html插入#projects domElement。
答案 2 :(得分:0)
我遇到过这种问题,只需运行
dd( json_decode( json_encode( Products::paginate(5) ), true) );
并且可以得到提示:)
我在这里已经阅读了一个解决方案: