У меня есть отчет в нашей внутренней системе, который может возвращать от 1 дня данные до полных лет. Из-за этого отчет может занять 0,5 секунды или более 45 секунд, чтобы сгенерировать все.Отменить запрос ajax перед отправкой следующего сообщения? (jQuery)
Отчет позволяет изменять кучу фильтров, все, которые при модификации, выпалить запрос Ajax очень просто:
var ax = $.ajax({
type: "GET",
url: "/blah",
data: values,
success: function(data) { .. }
});
Теперь проблема возникает, когда наш замечательный пользователь заявляет, «Ой, подождите, я хочу! это будет с февраля, а не с января! ». Но, запрос уже происходит с января - это много данных! Таким образом, пользователь переключает параметр даты на февраль, и я вижу, что консоль Javascript отправляет второй запрос. Теперь у нас есть два, и это гонка !
/отчет /? Start_date = января (Still Loading ...)
/отчет /? Start_date = февраля (Эй, я здесь тоже!)
Тогда , как правило, меньший будет загружаться раньше, но затем другой загружается, и он переписывает тот, который у них уже был. hmm :)
Я попытался использовать ax.abort()
, помещенный после объявления переменной ax
как упоминание ed here, но он, похоже, не работает.
Так что теперь я задаюсь вопросом, что мне не хватает? Я просто хочу убить текущий запрос (на стороне клиента, я знаю, что я не могу ничего с этим сделать на стороне сервера), как только пользователь изменит некоторые параметры, поэтому у меня нет двух или более запросов, идущих одновременно , Установка async: false
не является вариантом, так как она просто блокирует пользователя.
Заранее за вашу помощь.
Выглядит очень прост в использовании, спасибо. Попробуем это – Bartek
Это получилось отлично. Спасибо за ссылку – Bartek