Программирование

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
});
Всем удачи!

Добавить комментарий

Войти с через: 

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Защита от роБота * Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.