JQuery PJAX с PHP. нет контента при перезагрузке

Я пытаюсь использовать jquery pjax для загрузки моего содержимого в div. это работает нормально, но если я перезагрузить страницу, у меня нет содержимого. я думаю, что мне нужно поместить содержимое страницы в else {часть, но я не хочу устанавливать весь HTML в переменной php. как это исправить?

index.php:

<?php
$title = 'Home';
if(isset($_SERVER['HTTP_X_PJAX']) && $_SERVER['HTTP_X_PJAX'] == 'true'){ ?>
<div id="content">
<h1>home</h1>
</div>
<?php echo "<title>{$title}</title>";
}else{
include 'wrapper.php';
}
?>

wrapper.php:

<ul class="nav navbar-nav" style='margin-left:20px;'>
<li><a href='index.php' data-pjax='content'>Home</a></li>
<li><a href='page1.php' data-pjax='content'>Demo 1</a></li>
<li><a href='page2.php' data-pjax='content'>Demo 2</a></li>
</ul>
<div id="content"></div>

JS:

$(document).ready(function() {
$(document).pjax('a[data-pjax]', '#content', {
fragment: '#content'
});
});

page1.php

<?php if(isset($_SERVER['HTTP_X_PJAX']) && $_SERVER['HTTP_X_PJAX'] == 'true'){  ?>
<div id="content">
<h1>Page 1</h1>
</div>
<?php } else{ include 'wrapper.php';} ?>

page2.php

<?php if(isset($_SERVER['HTTP_X_PJAX']) && $_SERVER['HTTP_X_PJAX'] == 'true'){
?>
<div id="content">
<h1>Page 2</h1>
</div>
<?php }else{
include 'wrapper.php';
}
?>

3

Решение

Вы включаете файл wrapper.php только тогда, когда страница запрашивается без PJAX (== обычным способом). В wrapper.php содержимое пустое.

В wrapper.php вы должны включить правильную страницу, если источником запроса не является PJAX:

Прежде всего, вы должны переименовать некоторые файлы. Используйте index.php в качестве основного файла макета (что вы намеревались сделать с оберткой). Добавьте p как параметр запроса (который может быть прочитан как true $_GET в PHP) для загрузки страниц при нажатии на ссылки.

Создайте файл home.php, который будет страницей по умолчанию, загруженной в #content на index.php.

index.php

<ul class="nav navbar-nav" style='margin-left:20px;'>
<li><a href='index.php' data-pjax='content'>Home</a></li>
<li><a href='index.php?p=1' data-pjax='content'>Demo 1</a></li>
<li><a href='index.php?p=2' data-pjax='content'>Demo 2</a></li>
</ul>
<div id="content">
<?php if(!isset($_SERVER['HTTP_X_AJAX'])) {
if(!isset($_GET['p'])) {
include('home.php');
}
else {
include('page'.$_GET['p'].'.php');
}
} ?>
</div>

Это очень простой пример. В реальных приложениях это нужно сделать другим способом, чтобы защитить скрипт от определенных атак.

Я предполагаю, что вы стартер. Пожалуйста, посмотрите на CodeIgniter. Это фреймворк, который имеет много готовых к использованию функций. Это оказалось «легко» учиться …

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]