使用ajax

时间:2015-09-21 07:15:18

标签: php jquery ajax laravel laravel-5

我是网络开发的新手。我正在使用laravel为我的应用程序,我使用刀片模板来创建页面。我有一个主刀片,我的页眉和页脚存在,我使用它作为包装。我想要所有的在没有重新加载该基本模板的情况下打开的其他页面,当我打开页面时,它正确地使用新视图扩展主包装,但是当我用该页面的ajax内容更新该页面的内容时,可能会增加页脚的内容。因为@includes()在现有的页面中创建了一个新的页面,但我想修复那个双重内容和页脚。请帮助!这是我用来在主包装器中加载的页面代码

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

1 个答案:

答案 0 :(得分:-2)

我建议除非它是一个非常简单的用例/游乐场练习,你不要这样做,而是使用Laravel定义一个合适的API,然后使用像React这样的前端框架,Angular,Ember等与这个API交互并处理DOM操作/创建。似乎v bizarre使用加载了Ajax的HTML重新渲染整个页面。有很多关于使用Laravel和各种前端框架的教程

但是,根据您的要求,您需要首先创建一个扩展了您拥有的wrappertemplate的页面。这应该在正文中没有任何内容的情况下加载

然后创建一个具有您想要的html的刀片文件 - 它不应该扩展任何内容。然后你只有一个路由和控制器方法,它返回这个文件的内容。

然后,您所要做的就是将您的HTML放在ajax上并将其附加到正文中。

这只是一个样本控制器:

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>

然后,您只需使用基本的jquery或js将html参数附加到对您的正文内容的响应中。我也不会写JS,只是谷歌使用jQuery制作AJAX请求,并且有很多关于这个东西的文章。我必须强调你应该考虑使用Laravel +前端框架。

教程:http://culttt.com/2015/04/06/getting-started-with-laravel-and-ember/

您应该阅读控制器的Laravel文档。 http://laravel.com/docs/5.1/controllers