Php 用ajax加载laravel视图

Php 用ajax加载laravel视图,php,jquery,ajax,laravel,laravel-5,Php,Jquery,Ajax,Laravel,Laravel 5,我是web开发新手。我在我的应用程序中使用laravel,我使用刀片模板创建页面。我有一个主刀片,其中有我的页眉和页脚,我将其用作包装。我希望所有其他页面都在该页面中打开,而不必重新加载该基本模板,当我打开页面时,它会以新视图扩展主包装正确,但当我用ajax更新该页面的内容时,该页面的内容会使页脚加倍,这可能是因为@includes()在现有页面中创建了一个新页面,但我想修复这两个内容和页脚。请帮助!下面是我用来在主包装器中加载的页面代码 @extends('wrappertemplate')

我是web开发新手。我在我的应用程序中使用laravel,我使用刀片模板创建页面。我有一个主刀片,其中有我的页眉和页脚,我将其用作包装。我希望所有其他页面都在该页面中打开,而不必重新加载该基本模板,当我打开页面时,它会以新视图扩展主包装正确,但当我用ajax更新该页面的内容时,该页面的内容会使页脚加倍,这可能是因为@includes()在现有页面中创建了一个新页面,但我想修复这两个内容和页脚。请帮助!下面是我用来在主包装器中加载的页面代码

@extends('wrappertemplate')
@section('content')
<div class="body-content">`
And the content is here 
</div>
@stop
@extends('wrappertemplate')
@节(“内容”)
`
内容就在这里
@停止

我建议,除非这是一个非常简单的用例/操场练习,否则不要这样做,而是使用Laravel定义一个合适的API,然后使用前端框架(如React、Angular、Ember等)与此API交互并处理DOM操纵/创建。使用Ajax加载的HTML重新呈现整个页面似乎很奇怪。有很多关于使用Laravel和各种前端框架的教程

然而,对于您所要求的内容,您需要首先创建一个扩展现有包装器模板的页面。这应该在正文中没有任何内容的情况下加载

然后创建一个包含您想要的html的blade文件-它不应该扩展任何内容。然后您就有了一个route和controller方法,它返回这个文件的内容

然后,您所要做的就是通过ajax获取HTML并将其附加到正文中

这只是一个示例控制器:

class PageController extends Controller
{
    // This is your method which renders the page that is essentially a wrapper
    public function home()
    {
        return view('pages.home');
    }

    // This is your route which returns a partial, i.e. the content which gets refreshed
    public function content()
    {
        $html = view('partials.home-content')->with(['name'=>'ExoticChimp'])->render();

        return response->json(['html' => $html]);
    }
}
那么你的看法是:

<!--pages.home-->
@extends('wrappertemplate')
@section('content')
<div class="body-content">`
And the content is here 
</div>
@stop

<!--partials.home-content-->
<h1>Hello {{$name}}</h1>

@扩展('wrappertemplate')
@节(“内容”)
`
内容就在这里
@停止
你好{{$name}
然后,您只需使用基本jquery或js将响应中的html参数附加到正文内容中。我也不打算写JS,只是google使用jQuery发出AJAX请求,关于这方面的文章很多。我必须强调,您应该考虑使用Laravel+前端框架

教程:

您应该阅读控制器的Laravel文档。

我建议,除非这是一个非常简单的用例/操场练习,否则不要这样做,而是使用Larvel定义一个合适的API,然后使用前端框架(如React、Angular、Ember等)与此API交互并处理DOM操作/创建。使用Ajax加载的HTML重新呈现整个页面似乎很奇怪。有很多关于使用Laravel和各种前端框架的教程

然而,对于您所要求的内容,您需要首先创建一个扩展现有包装器模板的页面。这应该在正文中没有任何内容的情况下加载

然后创建一个包含您想要的html的blade文件-它不应该扩展任何内容。然后您就有了一个route和controller方法,它返回这个文件的内容

然后,您所要做的就是通过ajax获取HTML并将其附加到正文中

这只是一个示例控制器:

class PageController extends Controller
{
    // This is your method which renders the page that is essentially a wrapper
    public function home()
    {
        return view('pages.home');
    }

    // This is your route which returns a partial, i.e. the content which gets refreshed
    public function content()
    {
        $html = view('partials.home-content')->with(['name'=>'ExoticChimp'])->render();

        return response->json(['html' => $html]);
    }
}
那么你的看法是:

<!--pages.home-->
@extends('wrappertemplate')
@section('content')
<div class="body-content">`
And the content is here 
</div>
@stop

<!--partials.home-content-->
<h1>Hello {{$name}}</h1>

@扩展('wrappertemplate')
@节(“内容”)
`
内容就在这里
@停止
你好{{$name}
然后,您只需使用基本jquery或js将响应中的html参数附加到正文内容中。我也不打算写JS,只是google使用jQuery发出AJAX请求,关于这方面的文章很多。我必须强调,您应该考虑使用Laravel+前端框架

教程:

您应该阅读控制器的Laravel文档。

谢谢ExoticChimp。但是请你给我一个控制器和ajax代码的例子。谢谢ExoticChimp。但是请你给我一个控制器和ajax代码的例子。