Jquery pjax запрос отправки дважды

У меня есть приложение rails, и я продолжаю получать странное поведение с помощью запросов pjax. Когда я заглядываю в свои журналы разработки, я вижу, что делаются два запроса. Первый запрос - pjax, а следующий - нет. В результате страница все еще перезагружается.

Я ценю, сможет ли кто-нибудь помочь мне с этим.

Ответ 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 напрямую. Если вы не вызываете его напрямую, вам придется найти аналогичное решение.

Ответ 2

Я также столкнулся с этой проблемой - похоже, что это проблема, связанная с кешированием браузера. Я заметил, что если я очищу историю и кеш, это перестанет происходить в Chrome. Мне еще не удалось его решить, но я полагаю, что это связано с отключением кеширования браузера?