Pjax перезагрузка всей страницы
Всем привет друзья. Сегодня у нас речь пойдет про Pjax.
Часто при разработке приложений на Yii2, мы используем компонент Pjax в совокупности с другими компонентами и виджетами. Но бывает ситуация, когда вроде бы компонент Pjax инициализировали, внутри блока описали обновляемый компонент, но при обновлении этого блока через Pjax происходит перезагрузка всей страницы.
Это происходит потому, что у Pjax есть свойство timeout, который установлен в дефолтном значении в 1000мс или 1 сек.
Так как часто происходят моменты касающиеся данного момента, хотел бы сделать некоторый комментарий.
В документации есть честкое определение данного свойства $timeout.
/* @author Qiang Xue <qiang.xue@gmail.com> * @since 2.0 */ class Pjax extends Widget { ... /** * @var int pjax timeout setting (in milliseconds). This timeout is used when making AJAX requests. * Use a bigger number if your server is slow. If the server does not respond within the timeout, * a full page load will be triggered. */ public $timeout = 1000; ... }
В комментарии к Pjax об этом четко прописано:
Этот таймаут используется при выполнении запросов AJAX.
Используйте больший номер, если ваш сервер работает медленно. Если сервер не отвечает в течение таймаута, будет запуще полная загрузка страницы.
Поэтому, если ваш сервер отдает медленные запросы, вы можете описать следующую конструкцию.
Она должна исправить ситуацию с перезагрузкой полной страницы.
Если вы точно не уверены, какое значение timeout установить, вы можно присвоить значение timeout как false.
И ваша проблема с полной перезагрузкой страницы должна исправиться.
$(function(){ $.pjax.reload({ container : "#grid", timeout: false}); //Reload GridView });
Всем удачи!