PJAX не работает

Мой pjax не работает, так как я вижу, что время меняется..

Можете ли вы найти что-то не так с моим кодом.

<html><head>
<script src="jquery.js"></script>
<script src="jquery.cookie.js"></script>
<script src="jquery.pjax.js"></script>
<script type="text/javascript">
$('a[data-pjax]').pjax()
</script>
</head><body>
<?php
$header = "this is first part
<br/> <a href='pjax2.php' data-pjax='main'>GO</a>";
$date = date("Y-m-d H:i:s");
$footer = "this is second part";
$headers = getallheaders();
if(($headers['X-PJAX'] == 'true')){
echo "<div id='main'>first change</div>";
}else{
echo "$header<br/>$date<br /><div id='main'>first page</div><br />$footer";
}
?>
</body></html>

Бест, МДж

1 ответ

Решение

Изменить: Основная проблема заключается в том, что вы пытаетесь использовать передовые функции браузера, не освоив базовую отладку веб-страницы.

Вы решили ошибку с getallheaders() в PHP, так что это должно быть легко для вас.

Шаг 1. Загрузите http://www.bluereservations.com/pjax.php, откройте консоль браузера, обновите страницу и проверьте наличие сообщений в консоли.

Он сообщает об ошибке, что $ is not defined, Что наводит на мысль jquery не загрузился успешно.

Шаг 2. Загрузите http://www.bluereservations.com/jquery.js

Одна загадка раскрыта.

ПОСЛЕ ТОГО, ЧТОБЫ убрать все очевидные проблемы со страницей, затем посмотрите на более неясные вещи. Для pjax, который будет включать проверку сетевых ресурсов, HTTP-запрос и заголовки ответа и т. Д.

Если вы используете Firebug для Firefox, прочитайте http://getfirebug.com/wiki/index.php/Net_Panel для получения подробной информации. Для pjax вам нужно будет включить persist опция в случае неудачи pjax.

Следующее может решить другие проблемы с вашими тестовыми страницами...

При ответе на X-PJAX просим вас отправлять только основной контент, а не всю страницу. Для вашего тестового случая что-то вроде

<?php $headers = getallheaders();
      if($headers['X-PJAX'] == 'true'): ?>
first change
<?php else: ?>
<html>
<head>
<script src="jquery.js"></script>
<script src="jquery.cookie.js"></script>
<script src="jquery.pjax.js"></script>
<script type="text/javascript">
$(function() { $('a[data-pjax]').pjax(); });
</script>
</head>
<body>
<?php
  $header = "this is first part
    <br/> <a href='pjax2.php' data-pjax='main'>GO</a>";
  $date = date("Y-m-d H:i:s");
  $footer = "this is second part";
  echo "$header<br/>$date<br /><div id='main'>first page</div><br />$footer";
?>
</body>
</html>
<?php endif; ?>

jquery-pjax позволяет отправлять весь файл в ответ на X-PJAX Запросы. Посмотрите в документах для fragment вариант.

Лично HTMLDecor - намного более простой способ получить бесплатно pushState поддержка, но я пристрастен.

Другие вопросы по тегам