Wtyczka JQuery pjax ma domyślną obsługę błędów, która po prostu przeładuje stronę docelową. Ten moduł obsługi błędów zostaje wywołany, gdy upłynął limit czasu, który jest bardzo niski. W rezultacie, jeśli twoja prośba trwa zbyt długo, zobaczysz dwie identyczne żądania. Żądanie pjax (prawdopodobnie z zestawem atrybutów _pjax), po którym następuje kolejne żądanie niepubliczne. W przeglądarce najprawdopodobniej zobaczysz przeładowanie całej strony.
Jedną z rzeczy, które znalazłem w mojej sytuacji, było to, że sama reakcja nie trwała tak długo. Jednak HTML, który został zwrócony, zawiera osadzony flash. Nie jestem pewien, czy kod pjax dostaje odpowiedź przed załadowaniem Flasha czy po nim.
Aby rozwiązać ten problem, zmieniłem kod PJax aby wyglądać ...
$.pjax({
url: xhr.getResponseHeader('Location'),
container: '#container',
timeout: 4000 // pick a suitable timeout
});
Oczywiście, to jest bezpośrednio dzwoniąc pjax. Jeśli nie dzwonisz bezpośrednio, musisz znaleźć podobne rozwiązanie.
Musimy zobaczyć więcej niż nieliczne wyjaśnienie twojego pytania. Opublikuj odpowiedni kod, pliki dziennika lub inne rzeczy. – Bojangles
Używam tego samego problemu. Mam przykład dostępny [tutaj na cloudfoundry] (http://scaffolding.cloudfoundry.com/book/list). Łącza do sortowania paginacji i tabel powinny być pjax, ale za pomocą firebuga można je obserwować, wykonując jedno żądanie XHR, a następnie odświeżając całą stronę. Kod źródłowy uruchomionej aplikacji to [tutaj na GitHub] (https://github.com/robfletcher/grails-enhanced-scaffolding/tree/pjax) odpowiedni plik prawdopodobnie będący 'grails.list.js' –
z Firebug Ustaliłem, że w moim przypadku domyślny moduł obsługi powodzenia pjax nie znajdzie żadnej zawartości za pomocą selektora fragmentów, który mu dałem. Patrząc na [kod pjak] (https://github.com/defunkt/jquery-pjax/blob/master/jquery.pjax.js#L106) w takim przypadku wykona on pełne odświeżenie strony. Nie jestem jasne, dlaczego selektor nie działa, ponieważ odpowiedź AJAX wydaje się być w porządku i selektor jest ważny. –