Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Ajax.request(), повторный запрос в случае неудачи (https://javascript.ru/forum/extjs/27791-ajax-request-povtornyjj-zapros-v-sluchae-neudachi.html)

stopstopstop 25.04.2012 00:49

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() ?

DjDiablo 25.04.2012 01:51

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

stopstopstop 25.04.2012 02:01

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


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


Спасибо.


Часовой пояс GMT +3, время: 19:26.