Laravel Ajax 请求返回整个页面而不仅仅是数据


Laravel Ajax request returning whole page rather than just data

我正在尝试使用 ajax 查找分页的下一页。然而,它不断带来整个身体。我已经采取了一个打印屏幕来显示问题。

我不是 ajax 节目的专家,希望得到一些关于如何纠正此问题的帮助?

我的代码如下:

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;
});

查看全部刀片.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

这一行:

$("#projects").empty().html(data.html);

将用您在此处创建的返回html填充#project

$html = View::make('projects.viewall', $data)->render() ;

因此,您只需要更改要加载的"部分视图"projects.viewall即可。

可能您不需要扩展主布局。

但是您在此处呈现视图:

$html = View::make('projects.viewall', $data)->render();

所以html是由Laravel创建的,然后你把它作为html插入到 #projects 的domElement中。

我遇到了这种问题,只是运行

dd( json_decode( json_encode( Products::paginate(5) ), true) );

并且可以得到提示:)

我在这里阅读了有关此的解决方案:

http://www.tagipuru.xyz/2016/05/17/displaying-data-using-laravel-pagination-in-the-html-table-without-page-reload/