EXTJS 4: Прерывание выборочного запроса Ajax

В моем приложении у меня есть много запросов ajax, которые время от времени выполняются. У меня есть один, который выполняется с установленным временем ожидания, другой - с взаимодействием с пользователем. Моя проблема заключается в части взаимодействия с пользователем.

Сценарий заключается в том, что когда пользователь устанавливает параметр и нажимает кнопку, он выполняет запрос ajax. Если он ошибется с его параметром, пользователь что-то подкорректирует, а затем снова выполнит запрос ajax, при этом предыдущий запрос все еще продолжается.

Я хочу прервать предыдущий запрос без использования abortall(), потому что, как я уже говорил, есть другие запросы, которые не следует прерывать. Так что это похоже на выбор запроса на прерывание. Как я могу это сделать? Пожалуйста помоги.


person oneofakind    schedule 11.07.2013    source источник


Ответы (1)


На Ext.Ajax есть свойство autoAbort : Boolean

Должен ли новый запрос прерывать любые ожидающие запросы.

По умолчанию: ложь

Доступно с: 1.1.0

установите эту опору на true на вашем Ajax, отправленном пользователем, чтобы он не мешал setInterval ajax. Кроме того, убедитесь, что у вас есть на стороне клиента и на стороне сервера, чтобы избежать неправильных параметров. Исправить неправильные параметры на стороне клиента намного быстрее, дешевле и удобнее, чем позволить пользователю отправлять ложные данные!

Ext.Ajax.request({
    url: '/echo/json/',
    params: {
        id: 1
    },
    autoAbort : true, 
    success: function(response){        
          //do something
    },
    failure:function(response){
         //do something
    }
});

Вот пример на скрипке!

person Davor Zubak    schedule 11.07.2013
comment
Ничего себе, это была одна настоящая аккуратная скрипка. Хороший. Спасибо тебе за это. Это было то, что я искал. Спасибо - person oneofakind; 23.04.2014
comment
Проблема, есть ли автоаборт в Ext Store? Я использую магазин с прокси-сервером ajax. - person oneofakind; 02.05.2014
comment
Нет, но вы можете переопределить метод doRequest в прокси-сервере Ajax с помощью вызова Ext.Ajax и установить для свойства autoAbort значение true. - person Davor Zubak; 05.05.2014
comment
Он автоматически прерывает все ожидающие запросы или, например, только те, которые относятся к одному и тому же URL-адресу? Так что, если я выполняю поиск, я, возможно, не захочу прерывать несвязанные запросы. - person Alex; 10.11.2015
comment
@ Алекс, нет, не так. Он прерывает только тот запрос, для которого установлен autoAbort. Взгляните на исходный код Ext.data.Connection - person Davor Zubak; 10.11.2015
comment
@DuvorZubak, возможно, что-то изменилось с тех пор, как это было опубликовано, но начиная с Ext 6.6.0 autoAbort: true убьет все ожидающие запросы, инициированные через Ext.Ajax.request. См. метод createRequest в источнике Ext.data.Connection. - person Grant Humphries; 27.06.2018