
Отмена AJAX-запроса

Отмена AJAX-запроса
Вряд ли кто-то будет спорить, что технология AJAX для передачи данных - это очень удобно. В дополнение к предыдущим статьям я расскажу, как можно отменить AJAX-запрос. Зачем это надо? Пример из практики: есть карта, на видимую часть которой асинхронно подгружаются объекты. Пользователь перетаскивает карту, соответственно, на каждый новый видимый участок запрашивается новый список объектов. Иногда получается так, что запрос выполняется дольше, чем пользователь перемещает карту. Накапливается очередь из запросов на сервер, в свою очередь приводящая к очереди на отображение данных на клиентской стороне. Хотя правильно было бы показывать только результаты самого последнего запроса, а остальные запросы просто подавлять.
Для отмены AJAX-запроса в чистом JavaScript используется метод abort. Перед отправкой нового запроса проверяется наличие ранее созданного объекта XMLHttpRequest и, если он существует, то к нему применяется метод abort.
Code (JavaScript) : Убрать нумерацию
- // Запрос уже отправлен, отменить его
- if (http_request!=null) {
- http_request.abort();
- }
- // Mozilla, Safari, Opera, Chrome
- if (window.XMLHttpRequest) {
- http_request = new XMLHttpRequest();
- }
- // Internet Explorer
- else if (window.ActiveXObject) {
- try {
- http_request = new ActiveXObject("Msxml2.XMLHTTP");
- }
- catch (e) {
- try {
- http_request = new ActiveXObject("Microsoft.XMLHTTP");
- }
- catch (e) {
- // Браузер не поддерживает эту технологию
- }
- }
- }
- else {
- // Браузер не поддерживает эту технологию
- }
- // Получение результата
- http_request.onreadystatechange = function() {
- // Запрос завершен с каким-то результатом
- if (http_request.readyState==4) {
- // Сервер отработал успешно
- if (http_request.status==200) {
- // Результат получен
- }
- else {
- if (http_request.status==0) {
- // Запрос был отменен
- }
- else {
- // Произошла ошибка на стороне сервера
- }
- }
- http_request=null;
- }
- };
Просмотров: 2292 | Комментариев: 0
Метки: JavaScript, AJAX

Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
Комментариeв нет

Добавить комментарий
Заполните форму для добавления комментария
