Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.04.2012, 00:49
Новичок на форуме
Отправить личное сообщение для stopstopstop Посмотреть профиль Найти все сообщения от stopstopstop
 
Регистрация: 29.01.2011
Сообщений: 4

Ajax.request(), повторный запрос в случае неудачи
Друзья, помогите, пожалуйста решить задачку.

Когда на сервере заканчивается время жизни сессии, при получении очередного запроса он отдает 401 ошибку. В этом случае я вывожу форму авторизации. В случае успешной авторизации запрос данных нужно повторить.

Например, вызывается метод load() у некоего Store. Или submit() некой формы. А сервер возвращает 401. Слушаю requestexception у Ext.Ajax:

Ext.Ajax.on({
  requestexception: function (conn, response, options) {
    if ( response.status == 401 ) {
      //открываю форму авторизации, юзером вводятся логин и пароль,
      //форма сабмитится, и, в случае успеха, нужно store.load() повторить
    }
  }
});


Как осуществить повторный вызов того самого store.load() или form.submit() ?
Ответить с цитированием
  #2 (permalink)  
Старый 25.04.2012, 01:51
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Я точно незнаю, но разве события exception у proxy непозволяет определить 401 ошибку ???
Если да, то можно заставить каждый store который обламался, делать повторный вызов своего load самостоятельно,
а не централизовано как у вас получается при прослушивании requestexception.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 25.04.2012 в 02:05.
Ответить с цитированием
  #3 (permalink)  
Старый 25.04.2012, 02:01
Новичок на форуме
Отправить личное сообщение для stopstopstop Посмотреть профиль Найти все сообщения от stopstopstop
 
Регистрация: 29.01.2011
Сообщений: 4

Я не хочу у каждого proxy проверять статус ответа.
Сделал так. Глобально слушаю


Ext.Ajax.on({
  requestexception: function (conn, response, options) {
    if ( response.status == 401 ) {
      //открываю форму авторизации
      //....
      //слушаю событие userlogin у app, которое является ссылкой
      //на приложение
      app.on('userlogin', function() {
        Ext.Ajax.request(options);
        //всего-то и нужно было, сделать запрос с теми же options
      });
    }
  }
});


Спасибо.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск