2012-04-27 2 views
1

Мой 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> 

Best, MJ

+3

Я думаю, вам нужно поместить функцию '.pjax()' внутри '$ (document) .ready (function() {});'. – AndrewR

+0

Именно это и связано с Ruby On Rails? –

ответ

4

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

Вы решили ошибку с помощью 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, но я предвзятый.

+0

Он по-прежнему не работает '<сценарий SRC = "jquery.js"> <сценарий SRC = "jquery.cookie.js"> <сценарий SRC = "jquery.pjax.js"> <сценарий type = "text/javascript"> $ (document) .ready (function() { $ ('a'). pjax ('# main'). live ('click', function() { $ (это) .showLoader() }) })

change one

page one
'' –

+0

<сценарий SRC = "jquery.js"> <сценарий SRC = "jquery.cookie.js"> <сценарий SRC = "jquery.pjax.js"> <тип скрипта =» text/javascript "> $ (document) .ready (function() { $ ('a'). pjax ('# main'). live ('click', function() { $ (this) .showLoader() });} ) <заголовок PHP $ = "это первая часть
GO?"; $ date = date ("Y-m-d H: i: s"); $ footer = "это вторая часть"; если ($ _ SERVER [ 'X-PJAX'] == 'правда'):>

change one

page one
' –

+0

это не сработает –

Смежные вопросы