Как прервать / отменить запрос, используя прототип библиотеки JS? - PullRequest
15 голосов
/ 02 июля 2010

Используя этот код:

var pendingRequest =  new Ajax.Request(myUrl, {
               method: 'post',
               postBody: soapMsg,
               contentType: "text/xml",
               onSuccess: function(transport) {
                    doSomething(transport);
               },
               onFailure: function(t) {
                    OnAjaxFailure(t);
               },
               onException: function(req,exception) { 
                    OnAjaxException(req, exception);          
               } 

            }); 

Как я могу отменить запрос и отбросить данные, или если это не удалось, как я могу идентифицировать запрос (используя имя / guid / что угодно) в моем методе onSuccessчтобы я мог сказать, какой запрос завершается?

Я думал о создании array.push (pendingRequest) для отслеживания ожидающих запросов

Я хочу позволить пользователю прерывать их запрос, измените входные значения и повторите.

Иногда исходный запрос заканчивается после нового запроса, и я заменяю «правильные» данные на «старые» данные.(результаты поиска возвращают 50000 записей по первому запросу и 5 по второму, например)

Спасибо,

Ответы [ 2 ]

20 голосов
/ 02 июля 2010

Вы можете использовать XHR abort .

XHR-объект хранится в pendingRequest.transport, поэтому использование

pendingRequest.transport.abort()

отменит запрос.

2 голосов
/ 11 января 2012

Я рекомендую эту статью: http://blog.pothoven.net/2007/12/aborting-ajax-requests-for-prototypejs.html у меня работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...