dtr87341 2015-02-26 19:13
浏览 142
已采纳

如何使用ajax重新加载我的页面内容(使用Laravel视图/布局)

I'm using Laravel 4,

I want to reload a view and change the content (Basically change the langage)

When I arrive on the index : On my controller :

public function getIndex()
    {
        $lang = $this->retrieveLang("FR");
        $this->layout->content = View::make('cv.cv', array('lang' => $lang));
    }

The content extend the layout

@extends('layout.cvlayout')
@section('content')

My ajax function :

    <script>
    $(".changeLang").click(function(event) {
        event.preventDefault();
        var url = $(this).attr("href");
        $.ajax({
            url: url,
            cache: false,
            beforeSend: function() {
                $(".loaderOverlay").fadeIn();
            },
            success: function(html) {
                $("#container").html(html);
                $(".loaderOverlay").fadeOut();
                pageCvInit();
                initAjaxHeadline();
            }
        });

    });
    </script>

the url may be ****/fr so in the controller there is a method like that :

public function getFr() { $lang = $this->retrieveLang("FR"); return View::make('cv.cv', array('lang' => $lang)); }

I tried to put a condition on the

@extends() @section() @stop

part, but every time the ajax function is called, the whole body passes by the ajax method (even the , tags) and I just want to reload the body.

How do I do this? Many thanks

  • 写回答

2条回答 默认 最新

  • dtz55359 2015-02-26 19:38
    关注

    Not sure how you mean by the whole body passes by ajax and you just want to reload the body.

    Try changing your on success to filter out the body of the received html.

    success: function(html) {
        $("#container").html($(html).filter('body').html());
        $(".loaderOverlay").fadeOut();
        pageCvInit();
        initAjaxHeadline();
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?