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
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();
}
You only need to reload the div you want that see the changes, in success put this:
$("#mydiv").load(location.href + " #mydiv");