2011-01-20 1 views
0

Представим, что вы находитесь на странице с сеткой ExtJS с помощью pagingToolbar. Представим себе, что вы остаетесь на этой странице некоторое время, и что за это время ваша сессия PHP истекает. Когда вы нажмете «Следующая страница» или «перезагрузитесь» в сетке, вызов на сервер потерпит неудачу, так как он ответит сообщением о том, что вам не разрешено получать информацию (так как срок действия вашей сессии истек).ExtJS: хранилище, pagingToolbar и PHP session expire

Как вы можете справиться с этим в gridPanel, чтобы избежать его застревания? Я надеюсь, что это было достаточно ясно.

Bye!

ответ

0

Вам понадобится какой-то механизм сердечных сокращений, а это означает, что вы должны периодически отправлять вызов AJAX на ваш сервер, чтобы поддерживать сеанс PHP. Если вы используете Ext.direct, вы можете просто использовать Ext.direct.PollingProvider, который на сегодняшний день является самым удобным способом реализовать такое сердцебиение. Если вы не используете Ext.direct, вы можете использовать Ext.TaskMgr или Ext.util.TaskRunner для вызова функции периодически, в которой вы можете просто отправить запрос AJAX.

Детали реализации оставляются для ОП.

+0

Привет, Стефан, спасибо за ваш ответ. Это один из интересных способов решения проблемы, я буду смотреть на нее. Но угадайте, что вы хотите уведомить пользователя о том, что что-то пошло не так, потому что данные, которые отправил сервер, не являются фактическим содержимым, которое будет отображаться в сетке, но сообщение об ошибке (возможно, закодировано в JSON: «Срок действия сеанса истек ... + redirect "): можно ли справиться с этой проблемой таким образом? – Danilo

+0

Да, это абсолютно возможно. Запрос «heartbeat» полностью отделен от фактического запроса данных о проблемах с магазином, поэтому у вас может быть обработчик событий на стороне клиента, который прослушивает это событие heartbeat (я говорю о подходе «Ext.direct») и реагирует на полезную нагрузку, содержащуюся в событии. Мы делаем это точно для одной цели: сохраняем сеанс до тех пор, пока не истечет определенный промежуток времени, а затем выйдите из системы. –

Смежные вопросы