【问题标题】:Laravel Ajax request returning whole page rather than just dataLaravel Ajax 请求返回整个页面而不仅仅是数据
【发布时间】:2013-11-30 16:34:41
【问题描述】:

我正在尝试使用 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

【问题讨论】:

    标签: php jquery ajax laravel laravel-4


    【解决方案1】:

    我遇到了这种问题,赶紧跑

    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/

    【讨论】:

      【解决方案2】:

      但是你在这里渲染一个视图:

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

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

      【讨论】:

        【解决方案3】:

        这一行:

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

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

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

        因此,您只需将 projects.viewall 更改为您想要加载的“部分视图”即可。

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

        【讨论】:

        • 我看到我将检索脚本放在另一个文件中,并将其包含在 viewall 文件中。我在这个文件中将其称为$html = View::make('projects.viewprojects', $data)-&gt;render();,我已将 if 语句粘贴到十六列 div 的末尾。它可以工作,但是如果我返回一页,它似乎不是 AJAX
        • url更改为url更改为project/viewall?page=1
        • 不用担心修复它,必须将 js 放在与我的其他 js 脚本不同的文件中
        猜你喜欢
        • 1970-01-01
        • 2013-07-19
        • 2021-06-02
        • 1970-01-01
        • 2018-06-08
        • 1970-01-01
        • 2018-05-03
        • 1970-01-01
        • 2020-06-28
        相关资源
        最近更新 更多