Проблема в том, что как только pjaxed запрос заканчивается, pjax также инициирует обычный запрос GET.
Мои коды выглядят так:
$(document).on('pjax:end', function(event){
alert("end");
inpjax = false;
});
$(document).on('pjax:timeout', function(event) {
alert("timeout")
event.preventDefault();
});
$(document).on('pjax:error', function() {
alert("error");
});
$(document).on('pjax:success', function() {
alert("success");
});
$(document).ready(function(e) {
inpjax = false;
$('.pj').click( function(e) {
e.preventDefault();
if(!inpjax)
{
inpjax = true;
$.pjax({
timeout: 5000,
url: $(this).attr('href'),
container: '#codeport'
});
}
});
});
Как вы можете видеть, он должен дать мне предупреждение о разных стихациях, но я только получаю предупреждение о событии pjax: end, и после этого оповещения pjax инициирует обычный запрос GET, выбор времени выглядит так:
[17:36:02.002] GET http://localhost/abstract?_pjax=%23codeport [HTTP/1.1 200 OK 86 ms]
[17:36:02.170] GET http://localhost/abstract [HTTP/1.1 200 OK 73 ms]
Я не получаю предупреждение о превышении времени ожидания, ошибке или успехе.
Что может быть причиной этого? Пожалуйста помоги…
РЕШЕНИЕ:
Проблема заключалась в том, что мой серверный код отвечал полной страницей, и это вызывало второй запрос GET. Поэтому, если эта проблема возникает и с вами, убедитесь, что ваш код на стороне сервера отвечает правильно на запросы PJAX.
пример:
<!DOCTYPE html>
<html>
<head>
<!-- styles, scripts, etc -->
</head>
<body>
<h1>My Site</h1>
<div class="container" id="pjax-container">
Download content from <a href="/page/2"> the other site </a>?.
</div>
</body>
</html>
Попробуйте добавить pjax к элементу, который вы хотите получать сообщения о событиях, например $(document).pjax('a', '#pjax-container')