Я создаю веб-страницу с laravel, и содержимое страниц главного меню загружается с помощью ajax.Проблема в том, что когда я возвращаюсь на предыдущую страницу с помощью кнопки «Назад» в браузере, браузер загружает не только содержимое, полученное при вызове ajax, но и всю страницу.Таким образом, я получаю два верхних и нижних колонтитулов.
Это мой код:
base.blade.php:
<html>
<body>
// список меню
...
<div class="main">
@yield('main')
</div>
</body>
</html>
page.blade.php:
@extends ('base')
@section('main')
<div class="main">
My page content.
</div>
@stop
// пользователь нажимает на ссылку меню и вызывает этот скрипт
script.js:
$(".menu_list").on("click", "a.menu_page", function(e) {
// get some variables
$.ajax({
type: "GET",
url: url,
dataType: "html",
success: function (result) {
// get only div.main content from result
var mainContent = $(result).find("div.main").html();
// and load this data
$("div.main").html(mainContent);
} ...
Я также пытался не возвращать полные данные страницы, а только основной раздел контроллера:
controller.php:
...
if(Request::ajax()) {
return view('page')->renderSections()['main']; }
И в script.js:
success: function (result) {
$("div.main").html(result);
, но это не имело никакого эффекта.
Так что я не понимаю, почему браузер загружает всю страницу в раздел @yield послевозврат к предыдущей странице, хотя контроллер вернул только часть содержимого страницы.