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
поддержка, но я пристрастен.