Ответ 1
Плагин JQuery pjax имеет обработчик ошибок по умолчанию, который просто перезагрузит целевую страницу. Этот обработчик ошибок вызывается при прохождении таймаута, который pjax устанавливает очень низко. В результате, если ваш запрос занимает слишком много времени, вы увидите два одинаковых запроса. Запрос pjax (возможно, с набором атрибутов _pjax), за которым следует другой запрос не-pjax. В браузере вы, вероятно, увидите всю перезагрузку страницы.
Одна вещь, которую я нашел в моей ситуации, заключалась в том, что сам ответ не слишком долго продолжался. Тем не менее, HTML, который был возвращен, включал flash-вставку. Я не уверен, что код pjax получает ответ до или после загрузки Flash.
Чтобы решить проблему, я изменил свой код PJax, чтобы выглядеть как...
$.pjax({
url: xhr.getResponseHeader('Location'),
container: '#container',
timeout: 4000 // pick a suitable timeout
});
Конечно, это вызывает pjax напрямую. Если вы не вызываете его напрямую, вам придется найти аналогичное решение.