Laravel Ajax 请求返回整个页面而不仅仅是数据
Posted
技术标签:
【中文标题】Laravel Ajax 请求返回整个页面而不仅仅是数据【英文标题】:Laravel Ajax request returning whole page rather than just data 【发布时间】: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
【问题讨论】:
【参考方案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)->render()
;
因此,您只需将 projects.viewall
更改为您想要加载的“部分视图”即可。
您可能不需要扩展主布局。
【讨论】:
我看到我将检索脚本放在另一个文件中,并将其包含在 viewall 文件中。我在这个文件中将其称为$html = View::make('projects.viewprojects', $data)->render();
,我已将 if 语句粘贴到十六列 div 的末尾。它可以工作,但是如果我返回一页,它似乎不是 AJAX
url更改为url更改为project/viewall?page=1
不用担心修复它,必须将 js 放在与我的其他 js 脚本不同的文件中以上是关于Laravel Ajax 请求返回整个页面而不仅仅是数据的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Ajax.ActionLink 更新整个页面而不仅仅是 UpdateTarget
javascript ajax请求返回html并将其重新链接到元素而不刷新整个页面
WordPress 中的 Ajax 调用返回整个 HTML 页面作为响应
如何使用 Ajax 加载过滤后的数据,而无需在 laravel 中重新加载整个页面